こんにちは。
Laravelを使って、ログイン中のユーザーがフォームのチェックボックスに回答して、その回答内容を、/menu/{user_id}のユーザーのプロフィールページ(ログイン不要)からみられるようにしたいです。
複数チェック可のチェックボックスの回答の配列をimplodeメソッドで文字列に変換してDBに格納しています。次にDBからその文字列を引っ張て来て、explodeメソッドを使ってviewに表示しようとしています。回答はproductsテーブル内のallergyというカラムに文字列を格納しているので、Controllerとviewのコードを以下のようにしています。
Controller
php
1 public function menu($user) 2 { 3 $user = User::findOrFail($user); 4 5 $allergy = $user->products->allergy->get(); 6 $allergy_array = explode(',', $allergy); 7 8 return view('new_menu')->with(['user' => $user, 'allergy_array'=>$allergy_array]); 9 }
view
php
1@foreach($user->products as $pro) 2@if($pro->category_id == 1) 3<div> 4 @if (in_array(1, $allergy_array)) 5 ... 6 @endif 7</div> 8@endif 9@endforeach
しかし、これだと
Property [allergy] does not exist on this collection instance.
というエラーが生じてしまいます。
get()をfirst()にしてみたり、エラーを検索にかけてみたりしたのですが、答えにたどり着けませんでした。間違っている箇所わかる方いらっしゃいましたらご教示いただきたいです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー