我有以下表格
**estudiante**
- id
- nombre
**grupo**
-id
-nombre
**estudiante_grupo**
-id
-grupoId
-estudianteId
所以,我想在group table中注册,然后在student_group中注册,学生 id 作为一个数组。以及最后生成的组表id 。我可以使用“查询构建器”来做到这一点,但我想这样做并用雄辩的方式保存代码。另一个问题,是否有必要为 student_group 明细表创建模型
我做了什么(和工作):
$lastId = DB::table("grupo") -> insertGetId(
[
"nombre" => $request -> nombre
]);
foreach($request -> estudiantesIds as $estId) {
DB::table("estudiante_grupo") -> insert([
"grupoId" => $lastId,
"estudianteId" => $estId
])
}
数组$request -> studentIds 是数值:
[1,2... ,n]
您的方案是多对多关系
机型配置
您的型号:
最初它们应该是这样的:
estudiante_id
grupo_id
此外,由于与您的模型相关的表是单数的,它们不遵循命名约定,因此您必须在属性中添加所述值
学生模型
组模型
根据您是否遵循 Laravel 约定,将添加您要从第二个到第四个位置传递给方法的参数,并且是:
两种型号的注册注册
此时,您应该已经使用类似于以下的语法注册了用户和组:
是
以上是您将为每个模型注册新记录的最短且最实用的语法;使用
$request->all()
就是把用户发送的所有值都取到对应的地方注册。重要的是要记住,为了使用该方法
create
,您必须在属性中指出$fillable
哪些值将允许批量分配。获取 id 并将其注册到数据透视表中
现在我们需要找到用户的 id 和他们的记录将附加到的组的 id。
现在我们将创建一个
attach
id gr以上应该将学生ID和组ID添加到您的表中
参考
attach
在这个答案中,我假设了几件事,即关系是多对多的,并且在中间表 courseId 中你犯了一个错误,它将是 studentId。
假设您已分别为组和学生表创建了组和学生模型。
要将您通过参数收到的一组学生 ID 插入到新创建的组中,如下所示:
Eloquent
您可以使用以下方法:sync: refresca relacion en tabla Pivote
attach: agrega relacion a la tabla pivote
但是您需要在和
M <-> M
的各自模型中定义关系Grupo
Estudiante
保存和更新方法
使用前
attach
一定要先保存Grupo
好,这样才能取到id
,如果需要可以正常使用sync
,用这个方法忘了for
anddettach
,因为表pivote
没有相关数据,不需要创建Modelo