Cakephp find(';list';)从子模型获取displayField

Cakephp find(';list';)从子模型获取displayField,cakephp,Cakephp,我有一个主模型和一个子模型。子模型有一个外键链接到主模型id,遵循cakephp命名约定。子模型定义主模型中记录的名称/描述 我试图用这些值(id和名称)填充视图中的下拉列表框。但是Cakephp find('list')通常只从一个模型获取信息 如何才能使我的查找(‘列表’)检索2个字段,例如: - child.master_id - child.name 或 谢谢 要更改find('list',$params)的键或值的字段,您可以将一个数组交给字段以及要用作第二个参数的字段名称 在您的示

我有一个主模型和一个子模型。子模型有一个外键链接到主模型id,遵循cakephp命名约定。子模型定义主模型中记录的名称/描述

我试图用这些值(id和名称)填充视图中的下拉列表框。但是Cakephp find('list')通常只从一个模型获取信息

如何才能使我的查找(‘列表’)检索2个字段,例如:

- child.master_id
- child.name


谢谢

要更改
find('list',$params)
的键或值的字段,您可以将一个数组交给
字段以及要用作第二个参数的字段名称

在您的示例中,以下代码会将返回数组的键更改为
child.master\u id
,将值更改为
child.name

$childs = $this->Child->find('list', array(
    'fields' => array('Child.master_id', 'Child.name')
));
有关查找类型“列表”的更多信息,请阅读。

只需定义字段即可 对于问题中给出的示例,您只需在find调用中指定两个字段:

$result = $Child->find('list', array(
    'fields' => array('master_id', 'name')
));
当find list被传递给两个字段时,它们被用作结果数组的键和值

如果您确实需要返回来自不同模型的字段,则需要告诉cake进行联接。最简单的方法是将递归值指定为0(假设已正确设置了子项belongsTo Master的关系):


请注意,在这种情况下,可能需要在字段列表中指定模型名称,以避免生成不明确的sql。

主项和子项之间的关系是什么?主人是孩子吗?只有这样才有可能。顺便说一句,你不应该虚构名字——如果你不在这里发明名字,你会更容易理解。如果你太过抽象,它也会增加错误的变化。PS:您应该经常提到您正在使用的确切cakephp版本。
$result = $Child->find('list', array(
    'fields' => array('master_id', 'name')
));
$sameResult = $Child->find('list', array(
    'fields' => array('Master.id', 'Child.name'),
    'recursive' => 0
));