Ada*_*ert 6 php query-builder laravel eloquent laravel-query-builder
我有一张库存变动表,其中显示了产品的历史记录(接收、移动位置等)
\n\n我有两个计算的查询(通过总计):
\n\n这两个查询都返回相同模型的集合。它们的结果数量始终相同,并且 Product_id 也始终相同。唯一不同的部分是接收/实时数量,我想以某种方式将各个记录合并到一个新集合中。IE
\n\n查询 1 中的单个记录:
\n\n0 => StockMovement {#1602 \xe2\x96\xbc\n #original: array:2 [\xe2\x96\xbc\n "live_qty" => "8"\n "product_id" => "2606598e-4150-461a-9e91-10d67cce8daa"\n ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n查询 2 中的单个记录;
\n\n0 => StockMovement {#1602 \xe2\x96\xbc\n #original: array:2 [\xe2\x96\xbc\n "received_qty" => "15"\n "product_id" => "2606598e-4150-461a-9e91-10d67cce8daa"\n ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n我试图最终得到一个合并结果,如下所示:
\n\n0 => StockMovement {#1602 \xe2\x96\xbc\n #original: array:3 [\xe2\x96\xbc\n "received_qty" => "15"\n "live_qty" => "8"\n "product_id" => "2606598e-4150-461a-9e91-10d67cce8daa"\n ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n我想以一种不将 Product 对象转换为数组的方式来执行此操作,因为我需要嵌入其中的关系。
\n\n目前,我对此进行了如下破解:
\n\n$live = $this->liveQtyCollection();\n$merged = $this->receivedQtyCollection()->map(function(StockMovement $received) use($live){\n $line = $live->where(\'product_id\', $received->product_id)->first();\n return arrayToObject(array_merge($received->toArray(), $line->toArray()));\n});\nreturn $merged;\n
Run Code Online (Sandbox Code Playgroud)\n\n该arrayToObject
函数递归地将数组转换回对象,这样我就可以像原始集合一样使用箭头选择器,但我确信一定有更好的方法!
我努力了:
\n\n我的最终目标是能够使用生成的集合,如下所示:
\n\n@foreach($stockMovements as $stockMovement)\n {{ $stockMovement->id }}\n {{ $stockMovement->live_qty }}\n {{ $stockMovement->received_qty }}\n@endforeach\n
Run Code Online (Sandbox Code Playgroud)\n
您可以使用此代码:
$collection = collect();
$cars = Car::all();
$bikes = Bike::all();
foreach ($cars as $car)
$collection->push($car);
foreach ($bikes as $bike)
$collection->push($bike);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11431 次 |
最近记录: |