首页 > 解决方案 > 如何通过关系表列条件查询表

问题描述

我有模型用户

class Users extends Model implements  AuthenticatableContract
{
    use Authenticatable,HasApiTokens;

    protected $primaryKey = 'user_id';
    protected $fillable = ['email','password','email_token', 'verified'];

    public function user_info()
    {
        return $this->hasOne('App\Models\UserInfo','user_id');
    }

}

在控制器中,我想查询关系表列 "kind" 等于 1 的所有用户。

So Users table has user_info_id(one to one) . User_info has kind_id.

我想通过关系表列 kind_id 查询用户。我可以通过 left join 做到这一点。但是我怎么能用关系来做呢?

我试过这样但它不起作用

$univer_list = Users::with('user_info')->where('is_university',1)
            ->where('kind_id',1);

标签: phplaravel

解决方案


您可以在with

$univer_list = Users::with(['user_info' => function($q) {
                        $q->where('kind_id', 1);
                    }])->where('is_university', 1)->get();

我假设您is_university存在于users表中,并且您的kind_id列存在于user_info表中。


推荐阅读