gpt4 book ai didi

CakePHP 不保存 BelongsTo Key

转载 作者:行者123 更新时间:2023-12-02 04:57:15 27 4
gpt4 key购买 nike

我正在尝试保存属于另一个模型的记录。然而,我得到一个错误,指出外键丢失。 CakePHP 文档显示了此工作的示例,但我无法让它工作。

这是表格:

    echo $this->Form->create('Message', array('action'=>'add'));
echo $this->Form->hidden('Ticket.id');
echo $this->Form->input('Message.message');
echo $this->Form->submit('Save Message');
echo $this->Form->end();

这是提交后返回给 Controller 的内容:

    Array(
[Ticket] => Array
(
[id] => 2
)

[Message] => Array
(
[message] => Message text
)

)

这是我的消息模型:

    class Message extends AppModel {
public $belongsTo = array('Ticket');
}

这是我的 Ticket 模型:

    class Ticket extends AppModel {
public $hasMany = 'Message';
}

这是我的 Controller 逻辑:

        $this->Message->save($this->request->data);

这是我收到的错误信息:

    Error: SQLSTATE[HY000]: General error: 1364 Field 'ticket_id' doesn't have a default value

CakePHP 文档非常清楚 Cake 将从 Ticket 数组中获取 id。使它起作用的唯一方法是手动将票证 ID 分配给消息数组。

    $this->request->data['Message']['ticket_id'] = $this->request->data['Ticket']['id']

我不应该那样做。神奇在哪里?我至少读过 20 篇类似的文章,但没有一篇完全像这样(可能是因为这是非常基础的,所以没有人会遇到这个问题,因为它对他们有用)。

我使用的是 2.4.2 版本

感谢您的帮助。

最佳答案

在这种情况下不要使用 Model::save() ,原因是您还想保存关联数据,为了为主模型及其关联模型保存数据,您需要使用 Model::saveAssociated()

你的 Controller 应该是这样的

  $this->Message->saveAssociated($this->request->data);

关于CakePHP 不保存 BelongsTo Key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com