繁体   English   中英

如何按关系表列条件查询表

[英]How to query table by relation table column condition

我有模型用户

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');
    }

}

在控制器中,我想查询关系表列“种类”等于 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);

你可以使这个条件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表中。

您可以使用whereHas根据关系的存在进行查询:

$univer_list = Users::where('is_university', 1)
    ->whereHas('user_info', function ($query) {
        $query->where('kind_id', 1);
    })->get();

仅获取应命名为User且与UserInfo有关系的Users ,其中kind_id等于 1。

Laravel 6.x 文档 - Eloquent - 关系 - 查询关系存在

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM