Php Laravel雄辩地从范围中的另一个表访问字段
我有两张桌子:Php Laravel雄辩地从范围中的另一个表访问字段,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我有两张桌子: 用户: id、名字、姓氏、电子邮件 雇员 id,用户id,工资 用户和员工之间存在关系。当我在模型中有一个范围时,问题就出现了: public function scopeSearchPaginateAndOrder($query) { $request = app()->make('request'); return $query->whereHas('user.internal_companies', function ($company) {
用户
和员工
之间存在关系。当我在模型中有一个范围时,问题就出现了:
public function scopeSearchPaginateAndOrder($query)
{
$request = app()->make('request');
return $query->whereHas('user.internal_companies', function ($company) {
$company->where('companies.id', '=', \Session::get('current_company')['id']);
})
->where(function ($query) use ($request) {
})
->select(['user.first_name'])
->get();
}
我得到以下错误:
字段列表中的未知列“user.first_name”
但是,这种关系确实存在:
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
我认为问题可能是您的选择
位置错误
作用域的思想是为相关对象的基础查询生成器添加额外的约束
尝试从范围功能中删除选择
,然后在应用范围后使用它。i、 e
public function scopeSearchPaginateAndOrder($query)
{
return $query->whereHas('user.internal_companies', function ($company) {
$company->where('companies.id', '=', \Session::get('current_company')['id']);
});
}
$user = User::all()->searchPaginateAndOrder()->select('user.first_name')->get();
有关使用全局和局部作用域的更多文档可在此处找到:
你能试试->选择('user.first\u name')
?嗨,很遗憾,这不起作用。基本上,如果执行User::all()->searchPaginateAndOrder
操作,则表示不存在这种情况。但是,使用->选择('User.first_name')
尝试$User=User::searchPaginateAndOrder()->first_name,执行User::searchPaginateAndOrder
工作正常,但仍显示与以前相同的错误代码>不,不幸的是,这也不起作用!就是不回来