0

我有三个表:blogs、posts、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'

我有一对多的关系船。一篇文章可以属于许多博客。

4

1 回答 1

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

于 2013-03-27T01:27:37.070 回答