我有模型用户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);
2 回答

潇潇雨雨
TA贡献1833条经验 获得超4个赞
您可以使用whereHas基于关系的存在进行查询:
$univer_list = Users::where('is_university', 1)
->whereHas('user_info', function ($query) {
$query->where('kind_id', 1);
})->get();
只获取与where等于 1有关系的,Users应该命名为。UserUserInfokind_id

Qyouu
TA贡献1786条经验 获得超11个赞
您可以在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表中。
- 2 回答
- 0 关注
- 148 浏览
添加回答
举报
0/150
提交
取消