我有一个带有儿童模型的主模型。子模型具有链接到主模型ID的外键,遵循cakephp命名约定。子模型定义主模型中记录的名称/描述。
我尝试使用这些值(ID和名称)填充视图中的下拉列表框。但Cakephp查找(' list')通常只从一个模型中获取信息。
我该怎么做才能让我的查找('列表')检索2个字段,例如:
- child.master_id
- child.name
或
- master.id
- child.name (where child.master_id = master.id).
谢谢!
答案 0 :(得分:1)
要更改find('list', $params)
的键或值的字段,您可以使用键fields
和要用作第二个参数的字段名称来处理数组。
在您的示例中,以下代码会将返回数组的键更改为child.master_id
,将值更改为child.name
:
$childs = $this->Child->find('list', array(
'fields' => array('Child.master_id', 'Child.name')
));
有关查找类型'list'
的详细信息,请阅读cookbook。
答案 1 :(得分:1)
对于问题中给出的示例,您只需在find调用中指定两个字段:
$result = $Child->find('list', array(
'fields' => array('master_id', 'name')
));
当查找列表通过两个字段时,它们将用作结果数组的键和值。
如果确实需要返回不同模型的字段,则需要告诉cake进行连接。最简单的方法是指定递归值0(假设关系Child belongsTo Master已正确设置):
$sameResult = $Child->find('list', array(
'fields' => array('Master.id', 'Child.name'),
'recursive' => 0
));
请注意,在这种情况下,可能需要在字段列表中指定模型名称,以避免生成不明确的sql。