更改包含模型或数组转换的find()类型

时间:2010-05-15 19:14:07

标签: php arrays cakephp

我有以下模型关联:

Response->Survey
Response->Question
Response->Choice
Survey->Question
Question->Choice

我想创建一个表单,我可以回答一项调查的所有问题。所以我使用以下内容返回所需的数据:

$questions = $this->Response->Question->find('all', array(
    'conditions' => array('survey_id' => $id), 
    'contain' => array('Choice')
    )
);
debug($questions)

Sample output

问题

  1. 是否有contain()选项,以便相关模型在find('list') format中返回,以便我可以使用:

    foreach($ question as $ questions){     $ this-> Form-> select('field_name',$ question ['Choice']); }

  2. 如果没有可用的选项,我怎么能用PHP的构建数组方法做到这一点?

  3. PS:foreach块不会变成代码块。如果有人可以编辑并修复它,请执行此操作并删除此行。谢谢。

1 个答案:

答案 0 :(得分:0)

是否使用:

$keys = array();
$values = array(); 

foreach($question['Choice'] as $choice) {
    array_push($keys, $choice['id']);
    array_push($values, $choice['choice']);
}
$choices = array_combine($keys, $values);

“原始”选项仍在$ questions数组中,未经修改。如果有人知道更好的方法,请发布。谢谢。