en Eloquentモデルをすぐにデータベースに保存せずに作成したいと思います。しかし、すべての関係を含めると、単一の "push()"呼び出しで構造全体を保存できるようになります。Eloquent relations - belongsToManyに追加します(しかし保存しません)
以下の例は、私が何をしようとしているかを示しています。私は次の関係を設定しています:
class Post extends Eloquent
{
public function tags()
{
return $this->belongsToMany('Tag');
}
}
class Tag extends Eloquent
{
public function posts()
{
return $this->belongsToMany('Post');
}
}
かなり標準的なポストは多くのタグを持つことができ、タグは多くの投稿に属することができます。私は単純に、今これを行うことができます理解
:
//save the post
$post = new Post;
$post->save();
//assign the tag
$post->tags()->save($tag);
はしかし、私は本当にのためにされて探しています何:
//create the post
$post = new Post;
//assign the tag (without saving anything yet!)
$post->tags()->add($tag);
//save the whole thing
$post->push();
関連ドキュメントがhereですが、の言及がないようです"save"ではなく "belongsToMany"に "add"します。
助けてください。あなたは
$post->tags()->add($tag);
が何をするのかを理解したときに
私はそうは考えていません。投稿とタグは、間違っていなければタグにはpost_idがあり、投稿が保存されているときにのみidが生成され、投稿に関連するタグが付くように関連付けられます。 – Sandeep
確かに - 実際にはpost_idとtag_idの両方がpost_tagテーブルにありますが、ポイントが取られます。私はまだこれが可能であると考えていたでしょう。実装の観点からは、ピボットの前に親を作成する必要があると思います。確かに可能ですが、現在実装されていない可能性があります。 – Blueberry
このようなピボットテーブルがあり、生成されたIDを使用する代わりに他の識別子を外部キーとして使用すると、可能性があります。これで、ピボットテーブルを保存してから、投稿と関連タグを保存することができます。 – Sandeep