我正在創建一個應用程序,用戶可以在其中發起挑戰,看看誰減重最多。有 1 個挑戰表,有一個 id、user_id(fk)、weight 和 week。為了每周在前端顯示它們,我制作了一個新數組。用戶控制器: public function index() { $users = User::all(); // get all challanges descending $challanges = Challange::orderBy('week', 'DESC')->get(); // make an array for every [week] that has an array with ['user' => 'weight'] in user_id order $weightArray = array(); // how long is the list depending on amount of weeks $startweek = 1; $endweek = Challange::max('week'); // go through every week for ($i = $startweek; $i <= $endweek; $i++) { // get weight foreach user and if no value set 0 foreach ($users as $user) { // get challange values per week $challenge = $user->challanges()->where('week', '=', $i)->get(); // if there is a challange if (count($challenge) > 0) { // set a weight value for that user *!!FIX make weigt alue unique!!* $weightArray[$i][$user->id] = $challenge[0]->weight; } else { // set 0 if no weight isset $weightArray[$i][$user->id] = 0; } } } return view('dashboard', compact('users', 'weightArray')); }當用戶登錄并按下更新時,會有一個表單提供隱藏輸入 Auth::user()->id 和星期。用戶必須自己輸入的重量。這會返回一個請求,但現在我不知道如何匹配周和 user_id,以找到需要更新權重的 id。挑戰控制器:public function update(Request $request) { $week = $request->week; $challange = Challange::find($request->user_id)->where('week', $week); dd($challange); }這將返回:錯誤調用成員函數 where() on null我應該預先在數組中添加 id 嗎?還是我 where('user_id', $user_id) 并在返回的數組上執行另一個 where ?我不知道該怎么辦。有人可以幫忙嗎?
1 回答

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
順序錯誤。你應該 :
$challange = Challange::where('week', $week)
->where('user_id', $request->user_id)
->first();
// or
$challange = Challange::where([
'week' => $week,
'user_id' => $request->user_id
])->first();
- 1 回答
- 0 關注
- 153 瀏覽
添加回答
舉報
0/150
提交
取消