我在数据库中有这些表:

[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/

10-16 13:26