laravel 相关条件 eloquent

laravel where condition for related eloquent

我必须为 UserUserAttr

建模

用户喜欢:

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