【问题标题】:CakePHP 3.0 saving belongsToMany without associated IDCakePHP 3.0 保存没有关联 ID 的 belongsToMany
【发布时间】:2015-04-23 11:37:49
【问题描述】:

我有 People belongsToMany 电话。我可以像这样在一个 save() 中保存一个人的手机吗?

在 PeopleTable 中:

$this->belongsToMany('Phones', [
    'foreignKey' => 'person_id',
    'targetForeignKey' => 'phone_id',
    'joinTable' => 'people_phones'
]);

在add.ctp中:

$this->Form->create($person);
$this->Form->input('person_name');
$this->Form->input('phones.0.phone_number');

在 PeopleController 中:

$person = $this->People->patchEntity($person, $this->request->data, ['associated' => ['Phones']]);
$this->People->save($person, ['associated' => ['Phones']])

但只有人得救,没有电话。没有错误信息。还能这样保存吗?

我有 CakePHP 3.0.2(今天更新)

Mabye 我应该补充一点,我是一个初学者,以前从未在 OOP 中编写过代码,而且我在没有任何相关答案的情况下折磨了谷歌两天。简单地说“是的,它应该这样工作,你肯定有一些错误”或“不,你必须先保存手机才能获得它的 ID”就足够了:) 谢谢

【问题讨论】:

  • 对我来说看起来不错...您的 Person 实体类是什么样的,特别是它的 $_accessible 属性?您还可以在修补后添加$person (debug($person);) 的调试转储并显示结果吗?
  • @ndm 你是对的!太感谢了!我在 $_accessible 中没有“电话”。我会在答案中写出Person实体的结果形式

标签: has-and-belongs-to-many cakephp-3.0


【解决方案1】:

感谢@ndm,在 $_accessible 属性的 Person 实体类中发现了问题。它应该是这样的:

protected $_accessible = [
    'person_name' => true,
    'phones' => true,
];

现在完美运行!非常感谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多