у меня есть это, чтобы вставить в 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>
Функция etiquetas () модели Local вернула этот 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, "pivot": { "id_locales": 1, "id_etiquetas": 1 } }, { "id": 2, "nombre": "qwe", "created_at": null, "updated_at": null, "pivot": { "id_locales": 1, "id_etiquetas": 2 } } ] } ]
Примечание: Сдаю все CSRF_TOKEN все работает, нет проблем
Сводная таблица таблицы - «local_etiquetas», и я хочу вставить, когда я пытаюсь, консоль возвращает ошибку POST 500 внутренняя ошибка сервера. как мне это сделать?
sync () в laravel таковы: laravel.com/docs/5.6/eloquent-relationships#the-save-me thod Поиск синхронизирующих ассоциаций
Хорошо, но все же. Нам нужно сообщение об ошибке, чтобы помочь вам в дальнейшем. Как я уже сказал, внутренняя ошибка сервера HTTP 500 может иметь множество причин. Пожалуйста, предоставьте дополнительную информацию о вашей ошибке.
[2018-07-30 12:11:10] local.ERROR: SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец id_locales не может быть пустым (SQL: вставить в значения local_etiquetas (id_etiquetas, id_locales) (1,)) {"исключение": "[объект] (Illuminate \\ Database \\ QueryException (код: 23000): SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'id_locales' не может быть пустым '(SQL: вставить в local_etiquetas (id_etiquetas, id_locales) ) значения (1,))
Я не понимаю, почему это, у меня есть автоинкремент, а в сводной таблице есть отношения






Попробуйте следующее:
$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);
}
Вы пытаетесь синхронизировать отношение, но локальной модели еще не назначен идентификатор, потому что он не сохранен. Попробуйте сначала сохранить его, чтобы ему был назначен идентификатор. Затем попробуйте синхронизировать отношения.
В вашем коде:
$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.
Что за сообщение об ошибке? Ошибка внутреннего сервера HTTP 500 может иметь самые разные причины. Пожалуйста, включите некоторую расширенную информацию. Проверьте ведение журнала Laravel и предоставьте некоторые подробности. Кроме того, что такое метод
sync()на вашем объектеetiquetas?