【问题标题】:How to combine multiple object in Laravel如何在 Laravel 中组合多个对象
【发布时间】:2022-06-10 16:37:43
【问题描述】:

我想合并我订购的产品并显示订单列表。

控制器:

$orders = Order::where('customer_id', 1)->pluck('products');
print_r($orders);

这是我收到的:

Array ( 
[0] => 
   [
        {"id":3,"product_id":3,"size":"47","quantity":7,"name":"Simple Regular T-shirt","price":2200,"thumbnail":"Thumbnail_614291597.jpg"},
        {"id":7,"product_id":4,"size":"47","quantity":8,"name":"Simple Regular Shirt","price":123,"thumbnail":"Thumbnail_91520734.jpg"}
   ] 

[1] => 
   [
        {"id":9,"product_id":3,"size":"45","quantity":2,"name":"Simple Regular T-shirt","price":2200,"thumbnail":"Thumbnail_614291597.jpg"}
   ] 
)

但我想要。

Array ( 
[0] => 
   [
        {"id":3,"product_id":3,"size":"47","quantity":7,"name":"Simple Regular T-shirt","price":2200,"thumbnail":"Thumbnail_614291597.jpg"},
        {"id":7,"product_id":4,"size":"47","quantity":8,"name":"Simple Regular Shirt","price":123,"thumbnail":"Thumbnail_91520734.jpg"},
        {"id":9,"product_id":3,"size":"45","quantity":2,"name":"Simple Regular T-shirt","price":2200,"thumbnail":"Thumbnail_614291597.jpg"}
   ] 
)

我该怎么做?

我已经尝试了不同的方法,但我不能这样做。首先,我试图将其转换为数组,然后对这些数组使用 array_marge() 函数。但是该数组只需要两个数组,但就我而言,没有指定用户给出了多少个数组。并尝试通过循环解决它(我刚刚尝试过)。我是这个领域的新手。

【问题讨论】:

  • “我已经尝试了很多不同的方法” - 比如什么?请edit your question 展示您的尝试,特别是哪些不起作用。
  • 对不起,我是这个领域的新手。我更新了一些信息。如果您知道此解决方案,请提供帮助。
  • 我的意思是包括您尝试过的代码示例,而不是描述它们...如果您可以展示您的尝试,以及为什么它们“不起作用”(请不要只说“它不起作用” " 没有像您在下面的答案中所做的那样提供更多信息;该语句本身没有有用;为什么它不起作用?)那么我们可以更好地帮助您。此外,Stackoverflow 不是免费的编码服务。我要求您展示您的尝试,以便我们帮助纠正它,并且因为它是必需的;您应该首先尝试解决自己的问题。

标签: php mysql laravel object


【解决方案1】:

你可以试试

$orders = Order::where('customer_id', 1)
    ->pluck('products')
    ->values()
    ->flatten(1);

pluck 将返回一个集合,flatten 深度为 1 将删除嵌套。 values 会将键重置为顺序 - (此处并非绝对必要)

Laravel Docs - Collections - Values

Laravel Docs - Collections - Flatten

【讨论】:

  • 它不工作。
  • @CreatiqueIT 请理解只写“它不工作”没有帮助。当你尝试上述方法时,你会得到什么输出 - 你需要详细说明,可以编辑你的问题来写 - 我试过这个,这就是我得到的。
【解决方案2】:

在应用查询后添加flatten()(使用->get()):

$orders = Order::where('customer_id', 1)->get()->pluck('products')->flatten();
print_r($orders);

旁注:
而不是print_r() 您可以使用dump() 在浏览器中漂亮地打印输出

 $orders->dump(); //only dump
 $orders->dd(); //dump and exit

【讨论】:

    猜你喜欢
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2021-09-04
    相关资源
    最近更新 更多