0

Yii の activerecord-relation-behavior 拡張機能に問題があります。

私はメインモデルを持っています:Userとサブモデル: UserPerson(一種のプロファイル)

これら2つのモデル間の関係が設定され、モデルの動作はyiiextを使用していますが、まだそれらを接続できません。

このコンテキストで$thisは、モデルを拡張してUser呼び出されるモデルがありますRegistrationModel

$person = new \UserPerson();
$person->full_name = $this->name;
$person->birthday = $this->birthday;
$person->gender = $this->gender;

$this->person = $person;
$this->person->save();

このようにして、実行できるはずですが、次の$this->save() エラーが発生します。

新しい関連レコードがあるレコードは保存できません!

私は多くのバリエーションを試しましたが、醜い、関係のないバージョンしか機能しませんでした. :(

$person->user_id = $this->id;
//..
$person->save();

この問題に対する提案はありますか?

4

1 に答える 1

1

答えは拡張機能のリポジトリにあります:

「新しい関連レコードがあるレコードは保存できません!」

保存されていないリレーションにレコードを割り当てました (データベースにはまだありません)。ActiveRecord Relation Behavior は、リレーション テーブルに保存するために主キーを必要とするため、これは機能しません。関連するレコードを保存する前に、すべての新しいレコードで ->save() を呼び出す必要があります。

したがって、関連するモデルを保存し、関連する要素を追加してから、モデルを保存する必要があります。

$person = new \UserPerson();
$person->full_name = $this->name;
$person->birthday = $this->birthday;
$person->gender = $this->gender;
$person->save();
//now $person has a primary key

$this->person = $person;
$this->person->save();
于 2013-04-29T09:56:56.117 に答える