[英]CakePHP 3: Save Associated Model Fail
我在使用Cakephp 3 patchEntity保存關聯模型時遇到困難。 這里涉及的模型總結如下
我的用戶溫度表
public function initialize(array $config)
{
$this->table('users_temp');
$this->displayField('name');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->hasOne( 'UsersExtraTemp', [
'foreignKey' => 'user_id'
]);
}
然后我的UsersExtraTempTable
public function initialize(array $config)
{
$this->table('users_extra_temp');
$this->displayField('id');
$this->primaryKey('id');
$this->belongsTo('UsersTemp', [
'foreignKey' => 'user_id',
'joinType' => 'INNER'
]);
}
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->existsIn(['user_id'], 'UsersTemp'));
return $rules;
}
Mi功能保存數據:
$user = $this->newEntity();
$user = $this->patchEntity($user, $this->request->data, [
'associated' => ['UsersTemp.UsersExtraTemp']
]);
$this->save( $user, ['associated' => ['UsersExtraTemp']] );
我的數據數組由$ this-> debug()打印
(
[name] => name
[lastname] => lastname
[email] => email@email.com
[password] => password
[passwordConfirm] => repeatPassord
[UsersExtraTemp] => Array
(
[google_token] => sjskdasdadk2
)
)
我在數據庫中為user_temp創建了一行,但沒有為我期望的一個users_extra創建一行。 知道我在做什么錯嗎?
假定$this
指向UsersTempTable
,則patchEntity()
的associated
選項不應包含該名稱,因為這表明UsersTempTable
與UsersTempTable
關聯,而不是這種情況。
該選項應與save()
調用中的外觀完全相同,即
$user = $this->patchEntity($user, $this->request->data, [
'associated' => ['UsersExtraTemp']
]);
同樣,在數據中,您應該為關聯使用正確的屬性名稱,如果具有hasOne
關聯,則該屬性名稱是關聯名稱的單個,強調的變體,即users_extra_temp
(
// ...
[users_extra_temp] => Array
(
[google_token] => sjskdasdadk2
)
)
最后但並非最不重要的一點是,請確保在UsersTemp
實體$_accessible
屬性中定義了屬性名稱
class UsersTemp extends Entity
{
// ...
protected $_accessible = [
// ...
'users_extra_temp' => true,
// ...
];
// ...
}
也可以看看
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.