插入一对多关系

时间:2013-03-26 23:52:44

标签: laravel

我有三张桌子:博客,帖子,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'

我有一对多的关系。帖子可以属于很多博客。

1 个答案:

答案 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:我不太了解属于多个博客的帖子的概念。