Laravel 关系 : 关系不 return 我问什么
Laravel relationship : relationship that does not return me what I ask
r我是laravel 7新手,还有一些小困难
我有两个表:用户和服务。这两个表有一个关系来检索用户的服务。
$users= User::with('poseur')->get();
它returns所有用户甚至那些不符合我关系条件的用户。
我在服务模型中使用范围:
public function scopePoseurs(){
return $query->whereRaw('slug','pos')
}
我在用户模型中使用 belongsTo 关系:
public function poseur(){
return $this->belongsTo('App\Service')->poseurs();
}
示例:我们有 2 个用户:
第一:丹尼尔有服务 slug = 'pos',
第二:Patrick 有服务 slug ='dev'
当我使用 $users=User::with('poseur')->get();
时,我看到了 Daniel 和 Patrick。
虽然应该只有丹尼尔。
你能帮我理解一下吗?
谢谢!
with()
用于预先加载。这基本上意味着,沿着主模型,Laravel 将预加载您指定的关系。如果您有一组模型,这将特别有用。
如果你想 return 所有用户,只与 poseur
有关系,那么使用 has()
方法:
$users= User::has('poseur')->get();
还有一种叫做whereHas()
的方法,它允许您为相关模型指定额外的过滤器来检查:
$users = User::whereHas('poseur', function($q){
$q->where('created_at', '>=', '2020-01-01 00:00:00');
})->get();
r我是laravel 7新手,还有一些小困难
我有两个表:用户和服务。这两个表有一个关系来检索用户的服务。
$users= User::with('poseur')->get();
它returns所有用户甚至那些不符合我关系条件的用户。
我在服务模型中使用范围:
public function scopePoseurs(){
return $query->whereRaw('slug','pos')
}
我在用户模型中使用 belongsTo 关系:
public function poseur(){
return $this->belongsTo('App\Service')->poseurs();
}
示例:我们有 2 个用户:
第一:丹尼尔有服务 slug = 'pos',
第二:Patrick 有服务 slug ='dev'
当我使用 $users=User::with('poseur')->get();
时,我看到了 Daniel 和 Patrick。
虽然应该只有丹尼尔。
你能帮我理解一下吗?
谢谢!
with()
用于预先加载。这基本上意味着,沿着主模型,Laravel 将预加载您指定的关系。如果您有一组模型,这将特别有用。
如果你想 return 所有用户,只与 poseur
有关系,那么使用 has()
方法:
$users= User::has('poseur')->get();
还有一种叫做whereHas()
的方法,它允许您为相关模型指定额外的过滤器来检查:
$users = User::whereHas('poseur', function($q){
$q->where('created_at', '>=', '2020-01-01 00:00:00');
})->get();