laravel 相关条件 eloquent
laravel where condition for related eloquent
我必须为 User
和 UserAttr
建模
用户喜欢:
id
name
1
john
2
doe
UserAttr 就像
id
user_id
job
1
1
seller
2
2
teacher
他们的关系是:
用户:
//User MODEL
public function UserAttr(){
return $this->hasOne(UserAttr::class);
}
用户属性:
//UserAttr MODEL
public function UserAttr(){
return $this->belongsTo(User::class);
}
控制器内部我想return这个
Return all Users Where They job is Seller
我试试
$users = User::where(User::UserAttr()->where('job','teacher'));
return $users;
但它不起作用
首先,'where' 需要两个参数。 where('column', 'value')
。其次,除非您使用专用于返回结果的函数,例如 find(1)
、first()
、get()
,否则您将始终获得一个构建器对象。
在这种特殊情况下,您需要查询关系。这样的东西应该适合你。
User::with('userAttr')->whereHas('userAttr', function($query){
return $query->where('job', 'teacher');
})->get();
供参考:
https://laravel.com/docs/9.x/eloquent-relationships#querying-relationship-existence
我必须为 User
和 UserAttr
用户喜欢:
id | name |
---|---|
1 | john |
2 | doe |
UserAttr 就像
id | user_id | job |
---|---|---|
1 | 1 | seller |
2 | 2 | teacher |
他们的关系是:
用户:
//User MODEL
public function UserAttr(){
return $this->hasOne(UserAttr::class);
}
用户属性:
//UserAttr MODEL
public function UserAttr(){
return $this->belongsTo(User::class);
}
控制器内部我想return这个
Return all Users Where They job is Seller
我试试
$users = User::where(User::UserAttr()->where('job','teacher'));
return $users;
但它不起作用
首先,'where' 需要两个参数。 where('column', 'value')
。其次,除非您使用专用于返回结果的函数,例如 find(1)
、first()
、get()
,否则您将始终获得一个构建器对象。
在这种特殊情况下,您需要查询关系。这样的东西应该适合你。
User::with('userAttr')->whereHas('userAttr', function($query){
return $query->where('job', 'teacher');
})->get();
供参考: https://laravel.com/docs/9.x/eloquent-relationships#querying-relationship-existence