我有三张桌子:博客,帖子,blog_post。这是我的代码。
$post = new Post();
$post->title = HTML::entities(Input::get('title'));
$post->content = Input::get('content');
$post->status = isset($_POST['save']) ? 2 : 1;
$post->save();
$blog = Blog::where('user_id', '=', Auth::user()->id)->first();
$post = $blog->posts()->insert($post);
我得到了:
SQLSTATE [23000]:完整性约束违规:1062重复条目 关键'PRIMARY'的'47'
我有一对多的关系。帖子可以属于很多博客。
答案 0 :(得分:1)
at13回答是正确的。您正在保存帖子,然后尝试通过博客关系再次插入帖子。
根据你的意见,你应该:
$post->has_many_and_belongs_to('blog');
$blog->has_many_and_belongs_to('post');
考虑到这一点,要创建多对多关系,您应该使用attach()
。
例如:
$post = new Post;
$post->title = "Foo Bar";
// ...
$post->save();
$user = Auth::user();
$blog = $user->blogs()->first();
$blog->posts()->attach($post);
Obs:我不太了解属于多个博客的帖子的概念。