【问题标题】:Laravel eloquent set array keyLaravel 雄辩设置数组键
【发布时间】:2014-07-27 01:21:20
【问题描述】:

我想创建一个数组,其中键等于返回的ID。 但是当我执行这段代码时,我只得到时间戳、存在和递增值。 我没有办法toArray(),因为$arr 已经是一个数组,所以不知道为什么这是不可能的..

    $projects = Project::with(array('todos', 'contacts', 'categories'))->get();

    foreach ($projects as $project) {
        $open = Todo::status($project->id, 1)->get()->count();
        $progress = Todo::status($project->id, 2)->get()->count();
        $completed = Todo::status($project->id, 3)->get()->count();

        $project->status = [
            'open' => $open,
            'progress' => $progress,
            'completed' => $completed
        ];

        $arr[$project->id] = $project;
        return $arr;
    }

【问题讨论】:

  • foreach 只会运行一次,因为您在使用return statement 时会停止您的方法。回到您的问题:如果您使用return $project 而不是return $arr,您会得到什么?
  • @PatrickReck 我得到一个带有递增键 [0]、[1] 等的对象数组。

标签: laravel laravel-4 eloquent


【解决方案1】:

也许你可以尝试一下 laravel 的方式:

$projects = Project::with(array('todos', 'contacts', 'categories'))->get();

$projects->each(function($project){

        $open = Todo::status($project->id, 1)->get()->count();
        $progress = Todo::status($project->id, 2)->get()->count();
        $completed = Todo::status($project->id, 3)->get()->count();

        $project->status = [
            'open' => $open,
            'progress' => $progress,
            'completed' => $completed
        ];

});

return $projects->toArray();

该查询返回一个照明集合对象,您可以利用可用的集合方法而不是自己连接它。 http://laravel.com/docs/eloquent#collections

【讨论】:

  • 我不认为这解决了 OP 的意图,即输出一个以 project->id 作为键的关联数组。
猜你喜欢
  • 2021-10-02
  • 1970-01-01
  • 2016-06-09
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2022-07-25
  • 1970-01-01
相关资源
最近更新 更多