プログラミング学習234日目〜Laravel 受発注アプリ作成23日目〜

昨日のforeach問題(https://note.com/pinyo/n/nc7c6766fc9ec
エラー解決のページがこちら。

配列にnullがあったためと思われます。
@foreach ((array)$inputs as $input)
$inputsの前に (array) を付けるだけで解決しました。

ただ不思議なのが、(array)をつけなくても画面上では正しく表示はされていました。ですが、そのページはformになっていて、その後の流れとして、formを送信してデータベースに登録する段階でエラーが発生します。
なぜこの段階でエラーが発生するのかはよくわかりませんが、とりあえず解決したのでよしとします。

で、次はデータベースへの登録。二次元の連想配列をどうやって登録しようかと考えたところこちらもforeachで解決。

foreach($inputs as $input){
 Order::create($input);
}

これでデータベースへの登録もでき、思いつく限りの難しいと思われていたところはすべてできました。

きりのいいところまでできたのでいろいろ触っていると、新たな問題が発生。商品の更新ができません。商品コードをuniqueにしているので、更新する際にすでに使われているということでバリデーションでひっかかってしまいました。ここはバリデーションをこう書いてやることで解決。

'prod_code' => ['required' , 'digits:6',
   Rule::unique('products')->ignore($this->id) ],…

多分、特定のidを選んだときはuniqueを無視するという意味だと思います。

これで商品の更新も無事にできました。

この記事が気に入ったらサポートをしてみませんか?