【问题标题】:CakePHP 1.3, Form Helper and Self Joined TableCakePHP 1.3、表单助手和自联接表
【发布时间】:2011-04-01 12:00:48
【问题描述】:

我的自加入类别表如下:

id, name, description, parent_id

我使用 Cake Bake 来生成模型、控制器和视图。模型 设置了 $belongsTo 和 $hasMany 关联。在 add() 的 控制器,

$parentCategories = $this->Category->ParentCategory->find('list');
$this->set(compact('parentCategories'));

存在。在添加视图中,蛋糕烘焙生成的表单是:

<?php
        echo $this->Form->input('name');
        echo $this->Form->input('description');
        echo $this->Form->input('isincome');
        echo $this->Form->input('parent_id');
?>

当我在浏览器中运行时,parent_id 字段正在下拉,但是 它没有被任何数据填充。我用过

<?debug($parentCategories);?> 

在添加视图中,它愉快地输出

Array
(
    [1] => Entertainment
    [2] => Groceries
)

但是这个数组并没有被用于填充下拉列表 表单助手。我该怎么办?这是 1.3 中 Cake 的表单助手的错误吗?它从未在 1.2 中发生过...

【问题讨论】:

    标签: cakephp cakephp-1.3


    【解决方案1】:

    field_id 添加输入时,表单助手会查找名为$fields 的变量。即,没有_id 和复数形式的名称。 $parentCategories 不符合该描述,因此未使用。 $parents 会。

    其次,$this-&gt;Category-&gt;ParentCategory$this-&gt;Category 相同。两者都引用了 Category 模型。无需通过ParentCategory

    第三,将 Tree 模型连接到自身通常不是一个好主意。当您开始使用更高的recursive 设置进行查询时,您就会明白为什么。您应该改为将其设为 proper Tree 并使用 TreeBehavior 方法对其进行查询。

    【讨论】:

    • 感谢 deceze,它成功了!但我想知道为什么 bake 会生成这样的输出。我在上面发布的是 cake bake 生成的代码!
    • @Asok 这就是为什么您不自行加入模型的原因,bake 不能很好地处理它。 :)
    • 正确树的链接不再有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多