我有3个表帖子,类别和post_category。例如书籍(1)和杂志(2)有2个类别。我创建帖子并选择两个类别我要保存post_id的书籍和杂志以及post_category表格中的categories_id如何在不同的行中插入两个类别以及如何在提交时获取帖子的ID?顺便说一下,我尝试在post表中添加category_id作为数组,但我很难查询该类别的单个id。
答案 0 :(得分:0)
使用insert命令
$param = array(
array('post_id' => '1', 'category_id' => 1),
array('post_id' => '1', 'category_id' => 2),
);
DB::table('post')->insertGetId($param);
注意!它会忽略时间戳
答案 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);