【问题标题】:How do I format the output array in CakePHP如何在 CakePHP 中格式化输出数组
【发布时间】:2010-07-15 18:48:08
【问题描述】:

假设我有一个索引操作,我想在其中获取项目列表:

$this->Project->find('all', array('order' => 'Project.modified DESC', 'conditions' => array('Project.user_id' => 1)));

效果很好,返回如下数组:

Array ( [0] => Array ( [Project] => Array ( [id] => 2 [title] => test project ) ) [1] => Array ( [Project] => Array ( [id] => 1 [title] => first project ) ) )

如何修改 find 函数,使其返回以下格式的数组:

Array ( [projects] => Array ( [0] => Array ( [id] => 2 [title] => test project ) [1] => Array ( [id] => 1 [title] => first project ) ) )

谢谢!

【问题讨论】:

  • Project而不是项目的问题是什么?

标签: cakephp arrays find


【解决方案1】:

您可以使用Set::combine() 实用程序方法来执行此操作。我已经将它用于类似的方式:

public function groupByMenu() {
  return Set::combine (
    $this->find ( 
      'all', 
      array (
        'conditions' => array ( 'NavItem.active' => 1 ),
        'order'      => 'NavMenuItem.display_order'
      )
    ),
    '{n}.NavItem.title',
    '{n}',
    '{n}.NavMenu.id'
  );
}

上面的代码采用一组导航项并重新组织它们,以便按照它们显示的菜单对它们进行分组。

【讨论】:

  • 它有点适合我。似乎很奇怪,Cake 没有更简单的方法来更改输出数组,比如说,通过不同地设置模型。谢谢!
【解决方案2】:

不清楚结果是否在“项目”而不是“项目”下,但如果你不喜欢它在 [0] 下,我相信你可以使用PHPs array_shift

$result = $this->Project->find('all', array('order' => 'Project.modified DESC', 'conditions' => array('Project.user_id' => 1)));
$result = array_shift($result);

结果将是:

Array ( [Project] => Array ( [id] => 2 [title] => test project ) ) [1] => Array ( [Project] => Array ( [id] => 1 [title] => first project ) )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多