2

私は2つのモデルを手に入れました:

Mail関係のあるクラス:

'relAttachments' => array(self::MANY_MANY, 'File', 'rel_mail_file(rel_mail, rel_file)'),

MailAdvancedArBehavior拡張機能がアタッチされているので、アタッチメントを1ライナーでリンクできます。これは次のようになります。

$mail->relAttachments = $attachments; // $attachments is an array of ids for `File` models

Mailque関係のあるクラス:

'relMail' => array(self::BELONGS_TO, 'Mail', 'rel_mail'),

MailとMailqueを保存してリンクしたら、メールを送信した後に次のコードを実行します。

$mail = Mail::model()->findByPk($id);
$mailModel = $mail->relMail;

var_dump(count($mailModel->relAttachments));  // outputs 1

$mailModel->sent = time();
$mailModel->save();
//$mail->delete();

save()を呼び出すと、次のエラーが発生します。

exception 'CException' with message 'Property "File.rel_file" is not defined.' in ...\framework\base\CComponent.php:131

ここで何が起こっているのか誰か知っていますか?

4

2 に答える 2

2

ファイルモデルでパブリック変数を定義する必要があるようです。

これを試してください...Fileクラスで

public $rel_file = 'id';
于 2012-09-26T06:19:15.127 に答える
0

または、ソースでそれを殺すことができます:)

/protected/extensions/CAdvancedArBehavior.phpにあります

行165をコメント化し、次のように置き換えます。

// $foreignobject = $foreignobject->{$foreignobject->$relation['m2mForeignField']};
$foreignobject = $foreignobject->getPrimaryKey();

このパッチはYiiフォーラムで入手しましたが、SuReVaのハックを必要とせずに問題を解決しました。いくつかのm2mモデルの関係を保存してロードすることで少しテストを行いましたが、広範囲にテストしていませんが、問題ないようです。

于 2012-10-17T03:40:54.290 に答える