Laravel:调用未定义的方法 Illuminate\\Database\\Query\\Builder
Posted
技术标签:
【中文标题】Laravel:调用未定义的方法 Illuminate\\\\Database\\\\Query\\\\Builder【英文标题】:Laravel : Call to undefined method Illuminate\\Database\\Query\\BuilderLaravel:调用未定义的方法 Illuminate\\Database\\Query\\Builder 【发布时间】:2018-10-03 01:52:23 【问题描述】:查询时使用 undefine 方法获取错误。只是我想从两个表中获取数据查询看看链接
public static function userDetail($id)
$result = User::whereHas('user_details', function ($query)
$query->where('user_details.user_id',$id);
)->first();
return $result ;
关系
在模型User
定义关系
public function userDetails()
return $this->hasOne(UserDetails::class);
在userDetails
模型中
public function user()
return $this->belongsTo(User::class);
【问题讨论】:
'user_details' 应该是userDetails
in whereHas
您还需要在此处添加use($id)
:function ($query) use ($id)
【参考方案1】:
只是改变
public static function userDetail($id)
$result = User::whereHas('user_details', function ($query) use($id)
$query->where('user_id',$id);
)->first();
return $result ;
【讨论】:
` "SQLSTATE[42S22]: 找不到列:1054 'where 子句'中的未知列 'userDetails.user_id' (SQL: select * fromusers
where exists (select * from user_details
其中users
.id
= user_details
.user_id
和userDetails
.user_id
= 2) 限制 1)",`
这意味着您的userDetails
表中的user_id
列不存在。
如果可行,请接受答案并投票。 @Javed【参考方案2】:
如果你不需要使用 static,你可以在 userDetails 上使用这个 $result 值
public function userDetail($id)
$result = userDetails::where('user_id', '=', $id)->first();
return $result ;
然后结果可以通过使用$value->user->user property从vale获取用户的访问权限
【讨论】:
以上是关于Laravel:调用未定义的方法 Illuminate\\Database\\Query\\Builder的主要内容,如果未能解决你的问题,请参考以下文章
Laravel:调用未定义的方法 Illuminate\\Database\\Query\\Builder
Laravel 5:调用未定义的方法 Illuminate\Database\Eloquent\Collection::exists()
调用未定义的方法 App\Models\Car::setCreatedAt() - Laravel - 5.8.16