Php 通过嵌套的渴望加载关系来调整订单
首先,我试着查看,但我无法得到有效的解决方案,因为它涉及到透视表,而我的没有。我的大脑无法从那个解决方案中提取出解决方案 我有一个疑问:Php 通过嵌套的渴望加载关系来调整订单,php,laravel,laravel-5,Php,Laravel,Laravel 5,首先,我试着查看,但我无法得到有效的解决方案,因为它涉及到透视表,而我的没有。我的大脑无法从那个解决方案中提取出解决方案 我有一个疑问: $orderLines = PurchasingOrderLine::where('season_id', '=', $seasonRecID) ->with('factory') ->with('purchasingFactoryDates.milestone') ->with('diverg
$orderLines = PurchasingOrderLine::where('season_id', '=', $seasonRecID)
->with('factory')
->with('purchasingFactoryDates.milestone')
->with('divergedColors.purchasingColorDates.milestone')
->get();
所以这是一段相当大的关系
我想按里程碑
的“number”属性对购买工厂日期
进行排序
下面是此查询的JSON响应示例(示例)
有什么办法吗?我不希望整个关系按里程碑.number
排序,只希望是购买工厂日期
最简单的方法是像这样连接查询:
$orderLines = PurchasingOrderLine::where('season_id', '=', $seasonRecID)
->select('purchasing_order_lines.*')
->join('purchasing_factory_dates', 'purchasing_factory_dates.purchasing_order_line_id', '=', 'purchasing_order_lines.id')
->join('milestone', 'purchasing_factory_dates.milestone_id', '=', 'milestone.id')
->with('factory')
->with('purchasingFactoryDates.milestone')
->with('divergedColors.purchasingColorDates.milestone')
->groupBy('purchasing_order_lines.id')
->orderBy('milestone.number')
->get();
我认为这很可能是你想要的,与你看到的另一个答案很接近
$orderLines = PurchasingOrderLine::where('season_id', '=', $seasonRecID)
->with('factory')
->with(['purchasingFactoryDates' => function($q) {
$q->select('purchasingFactoryDates.*')->join('milestone', 'purchasingFactoryDates.milestone_id', '=', 'milestone.id')->orderBy('milestone.number');
}, 'purchasingFactoryDates.milestone'])
->with('divergedColors.purchasingColorDates.milestone')
->get();
这是不是可以放在我调用的所有其他“with”方法的中间?好吧,但这只会在关系中排序Millestone而不是mileston编号的所有记录我认为你必须使用连接:这是我到目前为止最喜欢的解决方案,因为它仍然会带来里程碑和工厂日期。谢谢你的解决方案,等等。这不是按里程碑排序的。编号?我有1,3,10,2作为里程碑编号:(它似乎仍然在采购工厂日期之后排序。id这不是按里程碑编号排序。对于我来说,这仍然是按采购工厂日期id排序。如果我删除带有('purchasingFactoryDates.milestone')的
->,这将正确排序)
。不知何故,这会覆盖排序?因此,从这个意义上说,我没有得到结果中的里程碑,但采购订单行的排序正确吗?
$orderLines = PurchasingOrderLine::where('season_id', '=', $seasonRecID)
->select('purchasing_order_lines.*')
->join('purchasing_factory_dates', 'purchasing_factory_dates.purchasing_order_line_id', '=', 'purchasing_order_lines.id')
->join('milestone', 'purchasing_factory_dates.milestone_id', '=', 'milestone.id')
->with('factory')
->with('purchasingFactoryDates.milestone')
->with('divergedColors.purchasingColorDates.milestone')
->groupBy('purchasing_order_lines.id')
->orderBy('milestone.number')
->get();
$orderLines = PurchasingOrderLine::where('season_id', '=', $seasonRecID)
->with('factory')
->with(['purchasingFactoryDates' => function($q) {
$q->select('purchasingFactoryDates.*')->join('milestone', 'purchasingFactoryDates.milestone_id', '=', 'milestone.id')->orderBy('milestone.number');
}, 'purchasingFactoryDates.milestone'])
->with('divergedColors.purchasingColorDates.milestone')
->get();