将先前查询的值访问到新的嵌套查询 laravel
Posted
技术标签:
【中文标题】将先前查询的值访问到新的嵌套查询 laravel【英文标题】:Acess value of previous query into new nested query laravel 【发布时间】:2019-02-26 18:45:28 【问题描述】:我正在尝试使用以前模型的值查询数据,例如:MyModel->whereHas(MyModel.NestedModel.value > MyModel.value)
这是我正在尝试做的代码:
我的问题在$q->where('quantity', '<', 'inventoryItems.minimum_to_shopping');
,我需要一种方法来比较当前数量与之前范围的数量。
$itemShould = InventoryItemMeta::with('inventoryItems', 'inventoryItems.lastItemValue', 'inventoryItems.inventory', 'inventoryItems.inventory.property')
->whereHas('inventoryItems', function ($q)
$q->where('should_shopping', true)
->whereHas('lastItemValue', function ($q)
$q->where('quantity', '<', 'inventoryItems.minimum_to_shopping');
);
)->get();
【问题讨论】:
请您提供您的代码附带的错误。 如果我使用 '' 所有物品都来了,好像 laravel 正在比较使用 inventoryItems.minimum_to_shopping 之类的字符串 请尝试$q->whereColumn('quantity', '<', 'inventoryItems.minimum_to_shopping')
你是传奇
【参考方案1】:
您可以尝试使用whereColumn()
函数,它用于比较两列而不是一列与一个值,即:
$q->whereColumn('quantity', '<', 'minimum_to_shopping')
【讨论】:
在我的情况下,我只需要做 minimum_to_shopping,inventoryItems.minimum_to_shopping 会引发错误 这很奇怪,这个查询有效,但第一项总是被忽略,如果查询有效或第一项不来。我设置了数量最小值有什么想法吗? 请试试这个:代替最终的 ->get() 调用,您可以使用 ->toSql() 输出原始 sql,以便调试查询。 看起来不错,如果我使用inventory_items而不是inventoryItems也可以,有办法用运行值检查查询吗?select * from
Inventory_Item_Metas where exists(select * from
Inventory_Items where
Inventory_Item_Metas .
ID` = inventory_items
987654328 inventory_item_meta_id
和should_shopping
= 987654330 inventory_item_values
987654332 id
@ 987654332 987654333@.inventory_item_id
和quantity
inventory_items.minimum_to_shopping)) `
安装 laravel/debugbar 包,它有一个有用的查询记录器。以上是关于将先前查询的值访问到新的嵌套查询 laravel的主要内容,如果未能解决你的问题,请参考以下文章