这是我的情况:用户可以评论视频.评论同时属于视频和用户.我的模型看起来像这样:
@H_404_1@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');
}
}
我正在尝试插入评论:
@H_404_1@$comment = new Comment; $comment->content = 'content'; Auth::user()->comments()->save($comment);这会从sql引发Integrity约束违规错误,因为它只更新一个外键.以相反的方式(保存到视频)产生相同的结果.如何一次将它添加到两个模型,更新两个外键?
你现在遇到的问题是你懒得加载Auth :: user的注释.
我可以做的一件事是,在Eloquent模型中使用关联方法,请尝试这一点,看看它是否适合您的特定需求.
@H_404_1@// 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();