簡體   English   中英

如何使用查詢生成器查詢數據透視表值?

[英]How can I query a pivot table value using Query Builder?

我有兩個模型和一個數據透視表:

Teacher Class

數據透視表是class_teacher 我正在運行一個動態查詢,我可以在其中收到一組類ID,我想看看哪些教師被分配給他們。

一個班級可以有很多老師,老師可以在很多班級。

使用查詢生成器查詢此問題的最佳方法是什么?

到目前為止,我已經使用whereHas修飾符運行代碼來拉入關系,然后使用whereIn來查看值是否存在。 有些代碼如下:

return $builder->whereHas('classes', function ($query) use ($value) {
            $query->whereIn('class_teacher.class_id', $value);
        });

這不會觸發錯誤,但是當某些錯誤顯示時它不會返回任何結果。

我究竟做錯了什么?

謝謝

您可以在模型上定義關系,然后在這個簡單的情況下不需要使用查詢構建器。

例如,在您的Class模型中添加以下內容:

public function teachers()
{
    return $this->belongsToMany(Teacher::class);
}

然后你可以打電話:

// $values should be an array of class ids
$classes = Class::whereIn('id', $values)->with('teachers')->get();

對每個班級進行迭代將為您分配給該班級的教師收集。 另一件事是Class是PHP中的保留字,所以我不確定你可以像這樣使用它。

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM