我有模型用户
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查询用户。 我可以通过左加入来做到。但是我该如何处理关系呢?
我尝试过这样,但是没有用
$univer_list = Users::with('user_info')->where('is_university',1)
->where('kind_id',1);
答案 0 :(得分:0)
您可以在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
表中。
答案 1 :(得分:0)
您可以使用whereHas
根据存在的关系进行查询:
$univer_list = Users::where('is_university', 1)
->whereHas('user_info', function ($query) {
$query->where('kind_id', 1);
})->get();
仅获取与Users
有关系(其中User
等于1)的UserInfo
,应将其命名为kind_id
。
Laravel 6.x Docs - Eloquent - Relationships - Querying Relationship Existence