如果字段为空,我的目标是设置值。
但是出现“想获取非对象的属性”错误。
last_day是空字段,如何分配值1?
public function getPointsForExercises(){
$ls = Auth::user()->lessons()->get();
$last_day = Auth::user()->user_settings->last_day;
if (empty($user->user_settings->last_lesson)) {
$user->user_settings->last_lesson = 1;
}
第一个问题:$user
未定义变量。
您可以尝试使用该exists
函数来确保所存在的关系存在,然后使用该函数来更新值update
,如下所示:
public function getPointsForExercises() {
$ls = Auth::user()->lessons()->get();
$last_day = Auth::user()->user_settings->last_day;
if (Auth::user()->user_settings()->exists() && empty(Auth::user()->user_settings->last_lesson)) {
Auth::user()->user_settings()->update([
'last_lesson' => 1
]);
}
上面的代码并没有结束函数,也没有使用变量$ls
和$last_day
作为您的代码。
仍然行$ last_day = Auth :: user()-> user_settings-> last_day; 收到错误“试图获取非对象的属性”
如果
user_settings
不存在,则会出现错误。您不检查它是否存在。可以很容易地在一个像这样的衬里中解决:$last_day = (Auth::user()->user_settings()->exists() ? Auth::user()->user_settings->last_day : 'default value if it doesnt exist');