MyClas::insert($data) не вызывает событие сохранения ORM?

мы пытаемся зарегистрировать изменения, внесенные в модели, через ORM laravel 5.

Существуют события по умолчанию, которые мы используем для достижения того же, например static::saving(), static::created() и т. д.

Но когда я использую вставку ниже, ни одно из событий ORM не запускается.

Рабочий код:

$myclass = new MyClass;
$myclass->save($data);

Не работает:

MyClass::insert()

Пожалуйста, помогите парню.

Я думаю, что вставка выполняет прямой запрос к таблице и не использует и не запускает какие-либо методы Eloquent. Почему бы не использовать create() вместо этого?

thefallen 02.04.2019 08:25

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

Sravan V 02.04.2019 08:38

Я думаю, вы могли бы сделать макрос Lravel, чтобы перезаписать insert или заставить все MyClass модели расширять абстрактный класс, который будет иметь insert метод, в котором вы можете регистрировать каждый запрос.

thefallen 02.04.2019 08:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете Eloquent ORM, то ->save() не принимает никаких аргументов.

Правильный способ:

$flight = new Flight;
$flight->name = $request->name;
$flight->save();

Если вы используете построитель запросов, вы используете вставку(),

DB::table('flights')->insert([
    ['name' => 'Foo', 'emailaddress' => '[email protected]'],
    ['name' => 'Loo', 'emailaddress' => '[email protected]']
]);

Надеюсь это поможет.

Да! теперь получил представление о том, как они оба работают! Спасибо

Sravan V 02.04.2019 12:32

Другие вопросы по теме