Функция обновления / редактирования Laravel API - PullRequest
0 голосов
/ 14 февраля 2019
public function edit(Request $request, $id)
{
    $bridge = Bridge::where('bridge_id',$id);
    $bridge->bridge_id = $request->bridge_id;
    $bridge->bridge_name = $request->bridge_name;
    $bridge->bridge_description = $request->bridge_description;
    $bridge->bridge_region = $request->bridge_region;
    $bridge->latitude = $request->latitude;
    $bridge->longitude = $request->longitude;
    $bridge->save();
}

Я запутался, потому что если это $id.у меня нет столбца increments('id'), так как я изменил его в таблице string('bridge_id').Я не могу получить обновление / редактирование для работы.

это сообщение об ошибке:

BadMethodCallException: вызов неопределенного метода Illuminate \ Database \ Eloquent \ Builder :: save () в файле C: \ xampp \ htdocs \ PhilSIMS \vendor \ laravel \ framework \ src \ Illuminate \ Support \ Traits \ ForwardsCalls.php в строке 50

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Первая ошибка довольно ясна:

BadMethodCallException: вызов неопределенного метода Illuminate \ Database \ Eloquent \ Builder :: save ()

это потому, что вывызывают метод ->save() в построителе запросов вместо фактического экземпляра модели (Bridge).Чтобы решить эту проблему, сначала найдите элемент для обновления с помощью метода ->first().

$bridge = Bridge::where('bridge_id',$id)->first();
// Instead of: $bridge = Bridge::where('bridge_id',$id);

Или даже лучше, учитывая, что вам нужно найти элемент ... почему бы не использовать этот метод?

$bridge = Bridge::find($id);

Проверьте документацию по этой теме: Получение отдельных моделей / агрегатов .


Затем следующая ошибка:

Столбец не найден: 1054 Неизвестный столбец id

, кажется, потому что Laravel не знает, что ваш первичный ключ - bridge_id вместо id.По умолчанию Laravel будет искать первичный ключ с именем id, если пользовательский первичный ключ не указан.

Чтобы решить эту проблему, перейдите к вашей модели Bridge и добавьте:

// Bridge.php
protected $primaryKey = 'bridge_id';

Для получения дополнительной информации, относящейся к Условные обозначения , см. Документацию .

0 голосов
/ 14 февраля 2019

добавьте first в ваш запрос: $bridge = Bridge::where('bridge_id',$id)->first();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...