具有雄辩的组数组项

时间:2015-10-14 13:41:02

标签: laravel laravel-5 eloquent

我有以下雄辩的查询:

$extras = EventExtra::select('id', 'category', 'name', 'price', 'description', 'company')->get();

它从我的数据库中获取了一些数据。我想要的是将返回的数据分组两次,首先按类别分组,然后由公司分组,以便最终我有类似的东西返回给客户端:

    [
  {
    "name": "donation",
    "collection": [
        {
          "name": "sampleCompany1",
          "array": [
            {
              "name": "extra1",
              "description": "",
              "value": ""
            },
            {
              "name": "extra4",
              "description": "",
              "value": ""
            },
            {
              "name": "extra6",
              "description": "",
              "value": ""
            }
          ]
        }
      ]
  },
{
  "name": "donation",
  "collection":  [
      {
        "name": "sampleCompany2",
        "array": [
          {
            "name": "extra2",
            "description": "",
            "value": ""
          },
          {
            "name": "extra3",
            "description": "",
            "value": ""
          }
        ]
      }
    ]
}]

我只是输入上面的内容,所以它可能不是有效的对象数组,但基本上它显示了我想在这里完成的事情。

1 个答案:

答案 0 :(得分:1)

您可以使用Collection来构建自定义对象。像这样:

$return_data = Collect();

要使用属性添加集合中的项目,可以使用put函数。

$inner_data->put('name',$extras->name);

您还可以在集合中添加集合。 要仅推送集合中的现有集合,请使用push函数

$inner_data->push($some_collection)

编辑:由于您需要一个有效的示例,请参阅以下内容:

假设您要使用集合创建以下内容:

{
    "name": "extra1"
    "description": "",
    "value": ""
}

你会做这样的事情:

$my_collection = Collect();
$my_collection->put('name','extra1');
$my_collection->put('description','');
$my_collection->put('value','');

现在,您可以将此集合添加到另一个不需要密钥的集合中。现在让我们说它看起来像这样:

[
    {
     "name": "extra1"
     "description": "",
     "value": ""
    },
    {
     "name": "extra4"
     "description": "",
     "value": ""
    }
]

您现在可以:

$my_final_collection = Collect();
foreach($my_collections as $my_collection) {
    $my_final_collection->push($my_collection); // and so on in a loop
}