这是我的情况:用户可以评论视频.评论同时属于视频和用户.我的模型看起来像这样:
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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。