gpt4 book ai didi

php - Laravel 关系 - whereHas on hasMany

转载 作者:行者123 更新时间:2023-12-04 13:21:43 25 4
gpt4 key购买 nike

我的 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,但我不知道如何运行。

最佳答案

您可以尝试删除 DeliveryItem 模型的关系方法中的 where('entity_id', $this->delivery_id) 条件。

public function stockMovements()
{
return $this->hasMany(StockMovement::class, 'product_id', 'product_id');
}

关于php - Laravel 关系 - whereHas on hasMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51088268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com