"Record not found in table with primary key [NULL]" cakephp 3 关联表单中的错误

"Record not found in table with primary key [NULL]" error in cakephp 3 association form

我对如何通过父表单保存 BelongsToMany/Through 关联感到困惑。

我有一个 ProjectsTable,它通过 ProjectCharacters 属于 ToMany Characters。 我有一个通过 ProjectCharacters 属于 ToMany Projects 的 CharactersTable。

我的 projects/edit/# 页面在常规 projects/edit 表单之后包含第二个表单,如下所示:

    <?= $this->Form->create($project_character); ?>
    <?php
        echo $this->Form->input('character_id', ['options' => $character_options]);
        echo $this->Form->hidden('project_id', ['value' => $project['id']]);
    ?>
    <?= $this->Form->button(__('Add Character')) ?>
    <?= $this->Form->end() ?>

这只是我要在 ProjectCharacters 中为其创建新记录的项目 ID 和角色 ID。但是当我按保存时,出现以下错误:

 Record not found in table "projects" with primary key [NULL] 

我需要做什么才能通过此表单保存 ProjectCharacter 关联?

我会说你的问题在这里:

https://gist.github.com/sarahkeefe/a42d39efade836a675c8#file-projectscontroller-php-L156

您正在尝试为不接收任何参数(add 函数)的操作验证项目的所有权。您需要有条件地执行该代码或始终允许您的用户执行 add() 操作。

以后,您可以查看错误页面,它有一个堆栈跟踪,这是一个在您的错误发生之前被调用的函数列表。它们通常指出可以找到您的错误的地方。