只今、簡単なシフト機能を作っています。
いつ、誰が、どのシフトに入るかのshiftテーブルをつくる必要があります。
人数が増えたとき
二重のforeachが必要だと思っています。
・1人が全部のシフトに這入る場合の手書き
//ユーザー一人が全部のシフトに入る $dates = Date::all(); $user = User::first(); $user_id = $user->id; $date_array = []; foreach($dates as $date){ $shift = new Shift; $shift->date_id = $date->id; $shift->user_id = $user_id; $shift->save(); }
//ユーザー二人が全部のシフトに入る
$dates = Date::all(); foreach($dates as $date){ $shift = new Shift; $user = User::find(1); $shift->date_id = $date->id; $shift->user_id = $user->id; $shift->save(); $shift = new Shift; $user = User::find(2); $shift->date_id = $date->id; $shift->user_id = $user->id; $shift->save(); }
のような形で書けます。
この場合人数が増えるとコードがいっぱいになるのでforeachで書きたいと思っています。
foreachの二重に挑戦してみました
$dates = Date::all(); $users = User::all(); foreach($dates as $date){ $shift = new Shift; $shift->date_id = $date->id; foreach($users as $user) { $user_id = $user->id; $user = User::find($user_id); $shift->user_id = $user->id; } $shift->save(); }
user_idに2しか入ってこず、しっかりforeachが回っていないみたいです。
何日間も悩んでいますが解決しなくて質問しました!
よろしくお願いいたします。
foreachではなくjoinで一発でとれるのでは?SQLは組んでみましたか?
SQLは組んでいません。
コントローラー側の処理の一部なので
コントローラー内で処理したいです
いえ、どうみてもモデル側で済む処理ではないでしょうか。DB側から取得時に出力したい形でデータ取得すればロジックもスッキリしてパフォーマンスにも良い影響があります。
どうしてもというのでしたらご自由に、ですけど。
すみません知識不足でした。
モデル側の処理なんですね。
モデルでSQL書くのですかね?
そもそもjoinで通じてますか?
それ次第かと。
結局のところshiftテーブルにある各idから名称なり明細を取得したいという風に見えるのですが。
joinはさっきまで知らなかったので調べないといけない状況です。
やりたい事はそれです!
回答1件
あなたの回答
tips
プレビュー