我的 delivery
表中的1个条目与以下内容相关:
-
stock_movements
-
delivery_items
交货有:
public function deliveryItems()
{
return $this->hasMany(DeliveryItem::class);
}
public function stockMovements()
{
return $this->hasMany(StockMovement::class,'entity_id');
}
DeliveryItem有:
public function stockMovements()
{
return $this->hasMany(StockMovement::class, 'product_id', 'product_id')
->where('entity_id', $this->delivery_id);
}
deliveryItems表包含交付时到期的项目列表,stockMovements表包含到期的内容和已收到的内容 . 在某种情况下,我的deliveryItems表中可能有一行,但stockMovements中没有关联行 . 我想收集这些物品的集合 .
我尝试过这样的事情:
$delivery->deliveryItems()->whereHas('stockMovements')->get() //returns empty collection. Can use whereNotHas to get the opposite if it worked.
^^上面这个返回一个空集合 .
foreach($delivery->deliveryItems as $item){
dump($item->whereHas('stockMovements')->get());
}
^^这似乎产生了正确的结果,但每个循环产生相同的结果 . 我不相信我需要foreach,但我不确定热,没有它让它工作!我想我需要直接在deliveryItems集合上运行whereHas但是我无法弄清楚如何 .
2 回答
您可以尝试删除
DeliveryItem
model关系方法中的where('entity_id', $this->delivery_id)
条件 .你能试试吗