ฉันประสบปัญหาในการทำความเข้าใจเงื่อนไขการนับความสัมพันธ์ใน WhereHas หน้าเอกสารไม่มีการพูดคุยถึงเรื่องนี้ แต่หน้า API พูดถึงเรื่องนี้ อ้างอิงจาก API
Builder|Builder โดยที่ (สตริง $relation, ปิด $callback, string $operator = '>=', int $count = 1)
เพิ่มเงื่อนไขการนับความสัมพันธ์ให้กับแบบสอบถามด้วยคำสั่ง Where
ตัวอย่าง
A Resource
โมเดลมีความสัมพันธ์แบบหลายต่อมากกับ ResourceCategory
public function categories()
{
return $this->belongsToMany('ResourceCategory', 'resource_category_mapping');
}
เงื่อนไขความสัมพันธ์ใน Has
เงื่อนไขความสัมพันธ์ใน Has ทำงานตามที่คาดไว้
Resource::has('categories', '>', 1)->get()
//this return all resources which have more than one catgories
เงื่อนไขความสัมพันธ์ใน WhereHas
เงื่อนไขความสัมพันธ์ใน WhereHas ไม่ทำงานตามที่คาดไว้ ฉันแน่ใจว่าฉันเข้าใจผิด
Resource::whereHas('categories', function ( $query){
$query->whereIn('resource_category_id', [1, 2, 4]);
}, '>', 1)->get()
รหัสข้างต้นควรส่งคืนทรัพยากรที่มีหมวดหมู่เป็นของ [1, 2, 4] และทรัพยากรมีมากกว่าหนึ่งหมวดหมู่ แต่มันไม่ใช่
คำถาม
กรุณาอธิบายเงื่อนไขความสัมพันธ์ใน WhereHas อาจยกตัวอย่างมาด้วยจะเป็นประโยชน์มาก