我如何通过select2&laravel中的多次选择传递数据?

时间:2018-07-30 10:28:02

标签: php ajax laravel jquery-select2

我有这个要插入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内部服务器错误。我该怎么办?

1 个答案:

答案 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.