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

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

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

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

Laravel

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

データベース

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

Q&A

解決済

1回答

811閲覧

Laravel でformで受け取ったn個の複数データをDBへインサートの方法について

kazuyajp

総合スコア12

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

Laravel

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

データベース

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

0グッド

0クリップ

投稿2020/08/06 01:49

laravelを使用しています。初心者です。

どうしてもわからないことがあるため、質問をさせてください。

DBに複数レコードをインサートする場合についてです。

https://kengotakimoto.com/post-2562/
こちらのサイトを参考にして概要は理解できたのですが、
複数レコードの数が変動する場合にどのようなコードを掛けばよいのかで躓いています。

たとえば、2つのデータをインサートする場合は下記のように書くことで成功しました。

$datum = [ [ 'title' => $request->title['0'], 'price'=> $request->price['0'], 'nums'=> $request->nums['0'], 'user_id'=> $request->user_id['0'], 'document_id'=> $request->document_id['0'] ], [ 'title' => $request->title['1'], 'price'=> $request->price['1'], 'nums'=> $request->nums['1'], 'user_id'=> $request->user_id['1'], 'document_id'=> $request->document_id['1'] ], ]; // save into tstDB.users $cli = DB::table('details') -> insert($datum);

今回やりたいことですが、
配列の数が変動するため、 for文を利用してこのような記述をしようと思いました。

$count = count($name); for($i=0; $i < $count; $i++){ if($i==0){ $datum = [ ; } ['title' => $request->title[$i], 'price'=> $request->price[$i], 'nums'=> $request->nums[$i], 'user_id'=> $request->user_id[$i], 'document_id'=> $request->document_id[$i]], if($i==$count-1){ ]; } }

上記のこのようにしてみたのですが、エラーが出て進めません。

エラー・メッセージはこちらになります。

syntax error, unexpected '[', expecting identifier (T_STRING)

恐らく、 1番目のif文の中の [ が閉じていないのでエラーになっているかと思いますが、まだ未熟なので他の書き方が思い浮かばない状況で困っております。

こちらをどのように解決されているのか、どなたか教えていただけると助かります。
どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

PHPの基本ですが、配列定義の中にロジックはかけません。
$datumとやらはforの外で定義しておいて、forの中でいれたい情報を追記していってはどうでしょうか。

投稿2020/08/06 02:17

m.ts10806

総合スコア80875

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

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

kazuyajp

2020/08/06 02:30

ありがとうございます! なるほど。 やはり、 配列の中にfor文などは書けないのですね。 そのように書き直してみます。
m.ts10806

2020/08/06 04:01

「ロジックは書けない」と書きました。 Laravelやる前にPHPの基本をおさえたほうが良いのでは? 「Web職人のためのフレームワーク」の名の通り、それなり以上にPHPだけでなくWebに精通してないと使いこなせないと思います。 「プログラムは書いた通りに動く。思った通りには動かない」あたりから認識してください。
kazuyajp

2020/08/15 15:14

ありがとうございます。 勉強はしているのですが、実際に作りながら覚えていくような感じにしてしまっています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問