php – 使用多个外键插入Laravel模型

前端之家收集整理的这篇文章主要介绍了php – 使用多个外键插入Laravel模型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的情况:用户可以评论视频.评论同时属于视频和用户.我的模型看起来像这样:
class Comment extends Eloquent {
    public function video()
    {
        return $this->belongsTo('Video');
    }

    public function user()
    {
        return $this->belongsTo('User');
    }
}

class User extends Eloquent {
    public function comments()
    {
        return $this->hasMany('Comment');
    }
}

class Video extends Eloquent {
    public function comments()
    {
        return $this->hasMany('Comment');
    }
}

我正在尝试插入评论

$comment = new Comment;
$comment->content = 'content';
Auth::user()->comments()->save($comment);

这会从sql引发Integrity约束违规错误,因为它只更新一个外键.以相反的方式(保存到视频)产生相同的结果.如何一次将它添加到两个模型,更新两个外键?

你现在遇到的问题是你懒得加载Auth :: user的注释.

我可以做的一件事是,在Eloquent模型中使用关联方法,请尝试这一点,看看它是否适合您的特定需求.

// Get the video of the comment relation
$video = Video::find(Input::get('video_id')) ;

// Use the associate method to include
// the id of the others model
$comment = new Comment;
$comment->content = 'content';
$comment->user()->associate(Auth::user());
$comment->video()->associate($video);
$comment->save();

猜你在找的Laravel相关文章