【问题标题】:CakePHP Automagic Form Helper with Associations带有关联的 CakePHP 自动表单助手
【发布时间】:2017-08-30 10:53:57
【问题描述】:

我有两个 CakePHP 模型,Tests 和 Questions,其中一个 Test 有很多问题,而一个 Question 只有一个测试。

这两个代码都没有:

echo $form->create("Question", array('action' => 'add'));
echo $form->input("text");
echo $form->input("Test.id", array( 'value' => $test['Test']['id']  , 'type' => 'hidden') ); 
echo $form->end("Add");

也不:

echo $form->create("Question", array('action' => 'add'));
echo $form->input("text");
echo $form->input("Question.Test.id", array( 'value' => $test['Test']['id']  , 'type' => 'hidden') ); 
echo $form->end("Add");

将新问题与测试相关联(但会在数据库中创建它)。

$test['Test']['id'] 确实会产生正确的 ID 输出。

感谢您的帮助。

【问题讨论】:

    标签: php cakephp form-helpers


    【解决方案1】:

    您应该将两个模型与hasOnehasMany 关联关联(如果您还没有这样做),并在表questions 中创建一个名为test_id 的列(名为外键)。

    那么问题的形式就变成了:

    echo $form->create("Question", array('action' => 'add'));
    echo $form->input("text");
    echo $form->input("Question.test_id", array( 'value' => $test['Test']['id']  , 'type' => 'hidden') ); 
    echo $form->end("Add");
    

    【讨论】:

    • 虽然我已经完成了关联(使用 hasOne/hasMany),但感谢您的注意,这可能对将来有问题的人有用!
    【解决方案2】:

    您的命名已关闭。您应该改为调用隐藏字段 Question.test_id ,因为这是应该保存值的字段。例如:

    $this->Form->input('Question.test_id', array('type' => 'hidden', 'value' => $test['Test']['id']));
    

    【讨论】:

      【解决方案3】:

      我知道这个问题很老了,但是对于像我一样来这里寻找 CakePHP 3 答案的人来说,输入的关联命名约定已经改变,table.field 用于 BelongsTo/HasOne 关联,tables.field 用于 HasMany/ BelongsToMany 关联。

      阅读the docs了解更多信息。

      【讨论】:

        猜你喜欢
        • 2011-04-01
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多