[英]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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.