Laravel 插入一对多关系

Laravel 插入一对多关系,laravel,Laravel,我有三个表格:blog,posts,blog\u 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

我有三个表格:blog,posts,blog\u 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重复项 “47”表示键“PRIMARY”


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

at13回答是正确的。您正在保存帖子,然后试图通过博客关系再次插入帖子

根据您的意见,您应该:

$post->has_many__和_belion_属于('blog');
$blog->has_many_和_belient_('post');
记住这一点,要创建多对多关系,应该使用
attach()
。 例如:

$post=新职位;
$post->title=“Foo-Bar”;
// ...
$post->save();
$user=Auth::user();
$blog=$user->blogs()->first();
$blog->posts()->attach($post);

Obs:我不太理解一篇文章属于多个博客的概念。

听起来你有一种多对多关系。一篇文章属于多个博客,一个博客可以有多篇文章。是的,这是多对多关系的定义,这不同于你所说的一对多关系。哦,好的,谢谢。那么,我可以在
blog\u post
中为
post\u id
blog\u id
添加一个指向
blog\u id
的记录来保存一篇帖子。不幸的是,我不认识Laravel,所以我不会给出“答案”,但看起来你已经建立了一对多的关系,你正在尝试创建两次帖子,一次保存()第行,在insert()行中插入一次。我假设该框架能够建立多对多关系,并将博客“添加”到帖子中,反之亦然。因为用户可以有多个博客,他们可以为自己创建的多个博客添加帖子。=)