Я создаю приложение, в котором пользователи могут начать вызов, чтобы увидеть, кто больше всего теряет вес.
Существует 1 таблица вызовов с идентификатором user_id (fk), весом и неделей. Чтобы отобразить их во внешнем интерфейсе за неделю, я создал новый массив.
UserController:
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'));
}
Когда пользователь вошел в систему и нажал update, появляется форма, которая дает скрытый ввод Auth :: user () -> идентификатор и неделя. Вес, который пользователь должен ввести сам. Это возвращает запрос, но теперь я не знаю, как сопоставить неделю и user_id, чтобы найти идентификатор, где необходимо обновить вес.
ChallangeController:
public function update(Request $request)
{
$week = $request->week;
$challange = Challange::find($request->user_id)->where('week', $week);
dd($challange);
}
Это возвращает: Ошибка вызова функции-члена, где () в null
Должен ли я добавить идентификатор в массив заранее? Или я где ('user_id', $ user_id) и сделать другое где в массиве, который возвращает?
Я не знаю, что делать. Может кто-нибудь помочь, пожалуйста?