Есть ли альтернативный способ использования findorfail () при обновлении с помощью хранимых процедур? - PullRequest
1 голос
/ 25 мая 2019

Я получаю сообщение об ошибке:

"Вызов неопределенного метода Illuminate \ Database \ SqlServerConnection :: find ()"

Я пытаюсь обновить таблицу, которая была выполнена с использованием хранимой процедуры.

public function update(Request $request)
{
    $cont = DB::find($request->ContainerId);

    $cont->update($request->all());

    return back();
}

Я хотел обновить запись в SQL Server, но безуспешно.

Ответы [ 2 ]

1 голос
/ 26 мая 2019


Существует два способа поиска (выберите одну строку) из SQL:

  1. Использование построителя запросов (фасад БД)

Сначала нужно определить таблицу:

$cont = DB::table("your_table_name_here")->find($request->ContainerId);

Использование Eloquent

Вам необходимо использовать свою модель:

$cont = YourModelHere::find($request->ContainerId);

или для обработки исключений:

$cont = YourModelHere::findOrFail($request->ContainerId);

Надеюсь, это вам поможет!

Редактировать: 2019/05/26

Что лучше?

Для поиска или работы с несколько записей:

Я предпочитаю использовать Eloquent, потому что он простой, легкий, более читаемый и подходит для всех типов SQL!(Спасибо Martin Henriksen комментарий)

In General :

Почему мы должны использовать построители запросов для много записей вместо Eloquent?

0 голосов
/ 25 мая 2019

DB, как правило, является антишаблоном в Laravel приложениях, и DB также не имеет метода find, у него есть методы для необработанных SQL запросов.

Вместо этого используйте вашу модель, используйте там статические методы (например, find или findOrFail). Имя таблицы генерируется из множественной версии имени класса, поэтому имя таблицы должно быть containers

public class Container extends Model {
}

Container::find($request->ContainerId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...