Laravel Eloquent为帖子创建类别

时间:2014-07-09 12:00:28

标签: php mysql laravel eloquent

我有3个表帖子,类别和post_category。例如书籍(1)和杂志(2)有2个类别。我创建帖子并选择两个类别我要保存post_id的书籍和杂志以及post_category表格中的categories_id如何在不同的行中插入两个类别以及如何在提交时获取帖子的ID?顺便说一下,我尝试在post表中添加category_id作为数组,但我很难查询该类别的单个id。

enter image description here

3 个答案:

答案 0 :(得分:0)

使用insert命令

$param = array(
        array('post_id' => '1', 'category_id' => 1),
        array('post_id' => '1', 'category_id' => 2),
);

DB::table('post')->insertGetId($param);

注意!它会忽略时间戳

LINK HERE

答案 1 :(得分:0)

如果您使用Eloquent并且已在模型上正确设置关系,则可以在模型关系to insert new records on the pivot table上使用attach()方法。

$post = Post::create(['title' => 'Hello Second World']);
$post->categories()->attach([1,2]); // Attaching Category IDs to pivot table
echo $post->id; // Getting the ID

<强>跟进:

attach()方法只会根据传递的参数在数据透视表上创建新记录,但不会创建相关模型的新实例

要实现这一点,您需要将模型传递给关系:{/ p>上的save()方法

$post = Post::create(['title' => 'Hello World']);
$post->categories()->save(Category::create(['category' => 'Leaflets']));

感谢deczo澄清此

答案 2 :(得分:0)

$post = new Post();
$post->title = 'Hello new post';
$post->save();
$category_ids = $input['category_id']; //html name in array 
$post_cat_data = array();
foreach($category_ids as $index => $value) {
    if (!empty($value)) {           
        $post_cat_data[] = [            
        'category_id' => $value,            
       ];
    }       
 }                  
$post->post_category()->createMany($post_cat_data);