当我在 cakephp 3 中的 table 中同时具有 x 和 x_id 字段时,保存方法不起作用

Save method don't work when I have both x and x_id fields in my table in cakephp 3

我的用户 table 中有 languagelanguage_id 字段。当我想保存我的数据时,保存方法 returns false.

//Table/UsersTable.php
$this->belongsTo('Languages', [
    'alias' => 'Languages',
    'foreignKey' => 'language_id'
]);

当我删除此代码或从数据库中删除语言字段时,保存方法正常工作。

是的,请记住 CakePHP 保留了一个 属性 名称,它将在其中存储每个关联的关联数据。在您的例子中,对于 Languages 关联,它将使用 language 属性。如果您已有同名字段,您可以将关联配置为使用另一个 属性 名称:

$this->belongsTo('Languages', [
    'alias' => 'Languages',
    'foreignKey' => 'language_id',
    'propertyName' => 'preferred_language'
]);

就我个人而言,我会坚持惯例,在数据库中没有 language 字段,当您已经有 language_id 字段时,这就没有什么意义了。