Laravel在DB中查找where('week',$week)和where(',user_id&



我正在创建一个应用程序,用户可以在其中启动一个challenge,看看谁减肥最多。

有1个challange表,包含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'));
}

当用户登录并按下update时,会有一个表单提供隐藏的输入Auth::user((->id和week。用户必须自己输入的重量。这会返回一个请求,但现在我不知道如何匹配周和user_id,以找到需要更新权重的id。

ChalangeController:

public function update(Request $request)
{
$week = $request->week;
$challange = Challange::find($request->user_id)->where('week', $week);
dd($challange);
}

这将返回:对成员函数的错误调用,其中((为null

我应该提前在数组中添加id吗?或者,我在where('user_id',$user_id(,然后对返回的数组执行另一个where操作?

我不知道该怎么办。有人能帮忙吗?

订单错误。您应该:

$challange = Challange::where('week', $week)
->where('user_id', $request->user_id)
->first();
// or
$challange = Challange::where([
'week' => $week, 
'user_id' => $request->user_id
])->first();

最新更新