Yii在其他模型中调用beforeSave()进行保存

时间:2013-12-27 07:22:07

标签: mysql yii model relationship before-save

我创建了两个表,如forum_post和gallery。

forum_post表:

id user_id ststus photo_id

1 1嗨......! NULL
 2 1你好! NULL
 3 1 NULL 1

4 1 NULL 2

user_gallery表:

id user_id图片视频

1 1 1.jpg NULL

2 1 new.gif NULL

当用户在user_gallery表中上传图像文件时,我想在forum_post表中创建一行并将gallery id存储到forum_post->图像领域。以及用户ID也存储在forum_post表中。

我在ForumPost中的模型代码是:

public static function addForumImage($id, $user_id) {
    $forumImage = ForumPost::model()->find('LOWER(photo_id) = ?',  array( strtolower($image)));
    if (!$forumImage) {
        $forumImage = new ForumPost;
        $forumImage->photo_id = $image;
        $forumImage->save(false);
    }

UserGallery beforeSave函数是:

protected function beforeSave() {
    if (parent::beforeSave()) {

        ForumPost::addForumImage($this->id, $this->user_id);
        // var_dump($forumPost->photo_id);
        return true;
    }
    return false;
}

我的表格关系是,user_gallery->图片是指forum_post-> photo_id。

现在,图像存储在user_gallery文件夹中,我在ForumPost模型中获取id ... 请任何人帮助我...... :(

1 个答案:

答案 0 :(得分:1)

试试这个

protected function beforeSave() {
    if (parent::beforeSave()) {

        ForumPost::addForumImage($this->id, $this->user_id, $this->forum_image);
        // var_dump($forumPost->photo_id);
        return true;
    }
    return false;
}

模型

    public static function addForumImage($id, $user_id,$image) {
        $forumImage = ForumPost::model()->find('photo_id = :image',  array( ':image'=>strtolower($image)));
        if (empty($forumImage)) {
            $forumImage = new ForumPost;
            $forumImage->user_id=$user_id;
            $forumImage->content= NULL
            $forumImage->photo_id = $image;
            $forumImage->save(false);
        }
}