簡體   English   中英

CakePHP 3:保存關聯的模型失敗

[英]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選項不應包含該名稱,因為這表明UsersTempTableUsersTempTable關聯,而不是這種情況。

該選項應與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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM