Проблема
![enter image description here](https://i.stack.imgur.com/IuGuo.gif)
Что касается моего предыдущего вопроса здесь , мне было указано, что я не должен пытаться заполнять связанные модели на фабрике Laravel (т.е. я должен заполнять их на своей собственной фабрике).
Тем не менее, у меня есть наблюдатель, который ищет связанные данные во время создания и пытается заполнить связанные модели (так что я могу создать несколько связанных объектов, используя только метод create::
и одну многошаговую форму). Теперь мне нужно добавить проверку, чтобы увидеть, заполняются ли эти данные в обозревателе, поэтому мне не нужно указывать их на заводе.
При этом я теперь получаю ошибку сегментации при попытке заполнить мою базу данных. Я сузил причину этой строки - без проверки isset
она работает нормально (кроме $ data ['day'] не указана, следовательно, проверка);
Ошибка сегментации (ядро сброшено)
if(isset($data['day'])) $event->day->fill($data['day']);
Связанный код
EventFactory.php
$factory->define(App\Event::class, function (Faker $faker) {
return [
"name" => "A Test Event",
"description" => $faker->paragraphs(3, true),
"event_start_date" => today(),
"event_opening_date" => today(),
"event_closing_date" => tomorrow(),
"user_id" => 1,
"banner_id" => 1,
"gallery_id" => 1,
"related_event_id" => 1,
"status" => "published",
"purchase_limit" => 1000,
"limit_remaining" => 1000,
"delivery_method" => "collection",
"merchandise_delivery_method" => "collection"
];
});
EventObserver.php
public function created($event){
# get all attributes
$data = $event->getAttributes();
# fill any related models
if(isset($data['day'])) $event->day->fill($data['day']);
# save user
$event->push();
}
public function updating($model){
# get all attributes
$data = $model->getAttributes();
# fill any related models
if(isset($data['day'])) $model->day->fill($data['day']);
# save user
$model->push();
}
Другая информация
Команда: sudo php artisan migrate: reset --seed
Хост: Windows 10
Среда VM: Vagrant работает под управлением Ubuntu 16.04 через HyperV, смонтированный общий ресурс с Samba
Версия PHP: 7.1.20
Laravel Версия: 5.7
Обновление
Оказывается, проблема действительно в этой строке;
$event->push();
Может ли здесь быть что-то рекурсивное?
Обновление 2
С помощью Намошека теперь я могу сузить его до следующей ошибки из xdebug;
Достигнут максимальный уровень вложенности функции «256», прерывание!
Увеличение значения xdebug.max_nesting_level до 200000 возвращает ошибку segfault.
Мне кажется, это застряло в бесконечном цикле. Тем не менее, я не вижу, как вызов save()
или push()
в created
в конечном итоге перезвонит самому себе. Confused.