簡體   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