我在数据库中有这些表:
[posts, cats (categories), posts_cats (pivote)]
职位表和猫之间的关系是多对多的
我在模型类中声明了该关系:
//Post.php
public function cats()
{
return $this->belongsToMany('cats');
}
//Cats.php
public function post()
{
return $this->belongsToMany('posts');
}
问题是,如何插入具有多个类别的新帖子?
谢谢,
最佳答案
假设您知道帖子的ID,然后可以像这样附上一只猫:
Post::find($post_id)->cats()->attach($cat_id);
或像这样附加多只猫:
$cat_ids = array(1,2,3,4);
Post::find($post_id)->cats()->attach($cat_ids);
如果您在变量中获得了Post模型对象,那么可以说$ post:
$post->cats()->attach($cat_id);
// Or with multiple
$cat_ids = array(1,2,3,4);
$post->cats()->attach($cat_ids);
如果您有一个类别作为模型对象,那么可以说$ model:
$post->cats()->save($model);
小心@Gadoma's answer。没错,但是如果您想将类别添加到已经具有类别的帖子中,则应该使用attach()而不是sync()。 Sync()将删除使用时未提供给它的所有其他对象。
编辑:
因此,如果您要创建一个新的帖子,那么您可能正在做这样的事情:
$post = new Post;
$post->title = 'The title';
$post->something_else = 'Lorem';
$post->save();
//So now you have both the model object (the $post variable) and the id ($post->id).
$post->cats()->attach($cat_ids);
关于php - Laravel 4 : many to many (insertion),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23908040/