插入具有多个外键的Laravel模型

时间:2014-04-05 18:22:43

标签: php laravel eloquent

这是我的情况:用户可以评论视频。评论属于视频和用户。我的模型看起来像这样:

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 constraint violation错误,因为它只更新一个外键。以相反的方式(保存到视频)产生相同的结果。如何一次将它添加到两个模型中,更新两个外键?

1 个答案:

答案 0 :(得分:22)

您现在遇到的问题是您懒得加载comments的{​​{1}}。

我相信,您可以做的一件事就是在Eloquent模型中使用Auth::user方法,请尝试一下,看看它是否适合您的特定需求。

associate