我正在尝试在数据透视表中插入多个值。
这些表是参与者和事件(参与者和事件)。
我的想法是创建一个列表,该列表打印不在数据透视表列表中的值,然后选中要插入的所有值。然后将所有值传递给Controller并将其插入。
这是我的Evento模型:
class Evento extends Model
{
protected $primaryKey = 'id_evento';
public function participantes(){
return $this->belongsToMany('App\Participante', 'evento_participante', 'id_evento', 'id_participante' );
}
}
这是我的参与者模型:
class Participante extends Model
{
protected $primaryKey = 'id_participante';
public function eventos(){
return $this->belongsToMany('App\Evento', 'evento_participante', 'id_participante', 'id_evento');
}
这是模态,列表在哪里。在(Evento)show.blade模板上:
<div class="modal fade bd-example-modal-lg" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content modal-lg">
<div class="modal-header " >
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Nuevo Evento</h4>
</div>
<form action="{{ route('evento.update', ['evento' => $evento->id_evento]) }}" method="POST">
@csrf
<input type="hidden" name="_method" value="PUT"/>
<table id="table_id2" class="table table-hover table-bordered display">
<thead>
<!--<th style="width: 10px;"><button type="button" class="btn btn-default btn-sm checkbox-toggle"><i class="fa fa-square-o"></i></button></th>-->
<th>Nombre</th>
<th>Apellidos</th>
<th>Sexo</th>
<th>Categoría</th>
<th>Edad</th>
<th>Club</th>
<th>Cinturón</th>
<th></th>
</thead>
<tbody>
@foreach ($participantes as $participante)
@if (Auth::user()->hasRole('Administrador'))
<tr>
<td >{{$participante->nombre}}</td>
<td>{{$participante->apellidos}}</td>
<td>{{$participante->sexo}}</td>
<td>{{$participante->categoria->nombre}}</td>
<td>{{\Carbon\Carbon::parse($participante->fecha_nacimiento)->age}}</td>
<td>{{$participante->club->nombre}}</td>
<td>{{$participante->cinturon}}</td>
<td><input type="checkbox" name="insertar"/></td>
</tr>
@endif
@endforeach
<tfoot>
<tr>
<th>Nombre</th>
<th>Apellidos</th>
<th>Sexo</th>
<th>Categoría</th>
<th>Edad</th>
<th>Club</th>
<th>Cinturón</th>
</tr>
</tfoot>
</tbody>
</table>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Guardar</button>
</div>
</form>
</div>
</div>
</div>
这是我的EventoController:
public function show($id_evento)
{
$evento = Evento::find($id_evento);
//$participantes = Participante::all();
$participantes = Participante::get();
return view('evento.show', ['evento' => $evento], ['participantes' => $participantes]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Evento $evento
* @return \Illuminate\Http\Response
*/
public function edit(Evento $evento)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Evento $evento
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Evento $evento)
{
$evento->update($request->all());
//$evento=save();
if($request->has('test')){
$evento->participantes()->sync([$request->input('id_participante')]);
}
这将返回白屏。 URL是/ evento / {id}(在这种情况下为1)。
谢谢, 对不起,我的英语。
答案 0 :(得分:0)
您可以使用sync()方法将多个记录存储到数据透视表中,该方法接受带有值的数组。
以您的模型为例,您可以这样做:
$evento->participantes()->sync([1,2,3,4]);
这会将participantes
附加到您的evento
上;
在这里您可以找到有关https://laravel.com/docs/5.8/eloquent-relationships#updating-many-to-many-relationships
的更多信息