質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ダウンロード

リモートシステムからローカルシステムへとデータを受信する事、もしくはそのようなデータ転送を行う事をダウンロードと呼びます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

662閲覧

Laravel DBへデータ登録を行うためのコントローラーの記述

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ダウンロード

リモートシステムからローカルシステムへとデータを受信する事、もしくはそのようなデータ転送を行う事をダウンロードと呼びます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2021/12/22 01:36

編集2021/12/22 02:42

実現したいこと

Laravelの画面上でファイルをダウンロードしたユーザーや日時などをDBへ登録したい。

configにに記述されているファイルIDやダウンロードしたユーザーの情報を取得する必要があるのですが、取得方法が分からず躓いています。

現在の状況

エラーは出ないですが、DBのテーブルにデータが登録されることもない状況です。
動作としては画面上のダウンロードボタンが押された際に、ダウンロードを行ったユーザーID、ファイルID、ダウンロード日時がDBのダウンロードテーブルへ登録される動作を想定しています。

コントローラーでファイルIDやユーザーIDが取得できていない事が問題の一つではないかと考えています。

各ファイルの記述

Migration

1public function up() 2{ 3 Schema::create('download', function(Blueprint $table){ 4 $table->id('dl_id'); 5 $table->unsignedInteger('user_id')->nullable; 6 $table->unsignedInteger('file_id')->nullable; 7 $table->datetime('dl_date')->nullable; 8 $table->timestamp('created_at')->nullable(); 9 }); 10}

Route

1Route::get('download', [DownloadController::class, 'download'])->name('download');

Model

1protected $fillable = [ 2 'dl_id', // dlはダウンロードの略 3 'user_id', 4 'file_id', 5 'dl_date', 6 'created_at', 7];

Config

1<?php 2 3return [ 4 'group' => [ 5 'team' => [ 6 [ 7 'id' => 0, 8 'file' => 'ファイルA';, 9 ], 10 [ 11 'id' => 1, 12 'file' => 'ファイルB', 13 ], 14 ], 15 ], 16];

Controller

1public function download(Request $request) 2{ 3 $file = config('download. ' . $request->get('key')); 4 5 $dl = new Download(); 6 $dl->staff_id = auth()->id(); // ログインしているユーザーIDから取得したい 7 $dl->file_id = ; // configのidから取得したい 8 $dl->dl_date = now(); // ダウンロード日時を取得したい 9 $dl->save(); 10}

バージョン

Laravelは最新バージョン8x.です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AbeTakashi

2021/12/22 01:53

躓いてる状況をしっかりと記載した方が良いです。エラーが出るのか? エラーは出ないけど想定した動作をしないのか? 想定した動作でないのであれば、どのような動作を想定しているかをなるべく詳細に。 あと、質問内容とは関係ないとしても、開発環境やPHP、Laravelのバージョンなども一応は記載しておくべきでしょう。 参考) https://teratail.com/help/question-tips いちど上から下まで全部読まれることをオススメします。 現状だと「何を聞きたいのか?」がよく分かりません。
退会済みユーザー

退会済みユーザー

2021/12/22 02:40

ご指摘ありがとうございます。 質問の仕方を読み、一部修正を致しました。 至らない部分もあるかとは思いますが、その際は再度ご指摘いただけますと幸いです。
skys215

2021/12/22 06:54

> コントローラーでファイルIDやユーザーIDが取得できていない事が問題の一つではないかと考えています。 saveする前にデータを確認するのはどうですか?
guest

回答1

0

ベストアンサー

「エラーは出ないですが、DBのテーブルにデータが登録されることもない状況です。」

というのはちょっと不思議です。データベースの設定が誤っているなら致命的なエラーが発生してエラーメッセージが表示されるでしょう。エラーがでないということは、

  • 実際はデータがどこかに保存されている(みてる場所を間違えている)
  • function download()を通過していない(Routerの書き方が間違っている、テンプレートのactionの中が間違っている、など)

のどちらかじゃないでしょうか?(後者が有力かも)

質問文だけの情報だと外の人が原因を判断するのはちょっと厳しいですね。

  • Routeのフォームを表示する処理
  • ダウンロードボタンを表示するコントローラーのメソッドとダウンロードボタンを表示しているのHTMLテンプレート
  • どういうURLにアクセスして、どういうダウンロードボタンが表示されて、どのようなデータを入れて、送信ボタンを押したらどういう画面になったか?

などの情報があれば、分かる人が出てくるかもしれません。

投稿2021/12/22 13:56

編集2021/12/22 14:00
AbeTakashi

総合スコア4853

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/12/24 02:17

function dowmloadを通過していない事が原因でした。 ありがとうございます。
AbeTakashi

2021/12/24 02:37 編集

解決して良かったです。通過してるかどうかを簡単に判別する方法として、Laravelだと「dd($value);」という関数が便利です。$valueは何でも良くて変数の中身をブラウザ上に表示してくれるのですが、そこで必ず処理が止まるので、変数が表示されなければ通過してないと簡単に判別できます。もう少しPHPに慣れてきたら開発環境(PHPStormなど)を整えて、ステップ実行などができるようにするのもありだと思いますよ。
退会済みユーザー

退会済みユーザー

2021/12/24 03:33

ありがとうございます。 今までデバック作業があまり分かっていなかったのですがようやく理解できたので今後dd利用して作業します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問