php - Yii CAdvancedArBehavior 无法在加载后立即保存具有关系的模型

标签 php mysql yii many-to-many

我有 2 个模型:

Mail 具有关系:

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

Mail 具有 AdvancedArBehavior附加了扩展名,这样我就可以用 1-liner 将附件链接到它,我喜欢这样:

$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

有人知道这是怎么回事吗?

最佳答案

看起来您需要在文件模型中定义一个公共(public)变量。

在文件类中尝试这个...

public $rel_file = 'id';

关于php - Yii CAdvancedArBehavior 无法在加载后立即保存具有关系的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587155/

相关文章:

javascript - 从保管箱流式传输视频?可能的字节范围问题

php - xsendfile 期望什么编码?

php - mysql的代码点火器:通过设置添加值?

php - 如何在mysql中存储漂亮的url并在php中调用它们

php - 如何从 yii 获取多维数组 'CDbDataReader::readAll'

php - 如何在 Yii 2 中更新大于所选记录的记录

php - 在 PHP 中为数组设置定义的随机顺序

php - 将枚举转换为 int 并从 MySQL 中的另一个表插入该 int 值

activerecord - Yii框架中有类似 "has_one :through (from Rails)"的东西吗?

PHP:替换utf-8字符串中的无效字符