0

ブログ、投稿、blog_postの3つのテーブルがあります。これが私のコードです。

$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対多の関係船を持っています。投稿は多くのブログに属することができます。

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 に答える