[英]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.