我有这个要插入Laravel。
$local = new Local();
$local->nombre = $pedido->nombre;
$local->direccion = $pedido->direccion;
$local->idfamilias = $pedido->seleccion_editar;
if($pedido->has('id_etiquetas')){
$local->etiquetas()->sync($pedido->id_etiquetas);
}
$local->save();
$ pedido是“请求”。 $ local是表中的模型, 在模型中,我有这个
public function etiquetas(){
return $this->belongsToMany('App\Etiquetas','local_etiquetas','id_locales','id_etiquetas');
}
使关系变得多对多。
而且我在视图中有从Select2中选择多个内容
<select multiple="multiple" name="id_etiquetas[]" id="seleccion_editar_etiquetas" class="form-control selector_etiquetas">
@foreach($etiquetas as $etiqueta)
<option value="{{$etiqueta->id}}">{{$etiqueta->nombre}}</option>
@endforeach
</select>
模型'Local'的函数etiquetas()返回了此Json:
[ { “ id”:1 “ idfamilias”:1, “ nombre”:“ qwe”, “ direccion”:“ asd”, “ created_at”:null, “ updated_at”:null, “ etiquetas”:[ { “ id”:1 “ nombre”:“ wifi”, “ created_at”:null, “ updated_at”:null, “枢轴”:{ “ id_locales”:1, “ id_etiquetas”:1 } }, { “ id”:2 “ nombre”:“ qwe”, “ created_at”:null, “ updated_at”:null, “枢轴”:{ “ id_locales”:1, “ id_etiquetas”:2 } } ] } ]
注意:我通过了所有有效的CSRF_TOKEN,没有问题
表的枢纽是'local_etiquetas',我想插入,尝试时,控制台返回POST错误500内部服务器错误。我该怎么办?
答案 0 :(得分:0)
尝试以下操作:
$local = new Local();
$local->nombre = $pedido->nombre;
$local->direccion = $pedido->direccion;
$local->idfamilias = $pedido->seleccion_editar;
$local->save();
if($pedido->has('id_etiquetas')){
$local->etiquetas()->sync($pedido->id_etiquetas);
}
您正在尝试同步关系,但是尚未分配“本地”模型的ID,因为尚未保存。尝试先保存它,以便为其分配一个ID。然后尝试同步关系。
在您的代码中:
$local = new Local();
$local->nombre = $pedido->nombre;
$local->direccion = $pedido->direccion;
$local->idfamilias = $pedido->seleccion_editar;
if($pedido->has('id_etiquetas')){
$local->etiquetas()->sync($pedido->id_etiquetas);
}
// Here, $local does not have an ID yet. So when calling the Sync method an empty ID is passed for $local as it does not exist.
$local->save();
// Only after the save method is called, your model $local has an ID.