Как использовать модели в очереди Laravel

Я пытаюсь импортировать список рассылки из CSV в мою базу данных. У меня есть две модели в моем Laravel, которая отвечает за это: Target и Mailing (у одной Target есть много Mailing )

Я использую систему очереди с Beanstalkd. Я использую:

 Queue::push('ImportCSV', array( 'file' => $file->getClientOriginalName(), 'target' => $name )); 

Чтобы выполнить мои задания, а затем у меня есть класс задания ImportCSV:

 class ImportCSV { public function fire($job, $data) { Log::info("Starting to add {$data['target']} to database"); $target = new Target(); $target->name = $data['target']; $target->save(); $reader = new \EasyCSV\Reader($data['file']); // There must be a Email field in CSV file /*if(!in_array('Email', $reader->getHeaders() )) throw new Exception("Email field not found", 1);*/ while ($row = $reader->getRow()) { $mailing = new Mailing(); $mailing->target()->associate($target); $mailing->email = $row['Email']; $mailing->save(); } Log::info("Mailing list {$target->name} added to database"); $job->delete(); } } 

Весь код, похоже, работает с тех пор, как я получаю эти сообщения в файле журнала

 [2013-09-10 21:03:25] log.INFO: Starting to add TEst to database [] [] [2013-09-10 21:03:25] log.INFO: Mailing list TEst added to database [] [] 

Но никакие записи не добавляются в мою базу данных. Как использовать модели внутри работы? Я уже тестировал его в контроллере, например, и все работает нормально

Поскольку вы не видите других ошибок, я думаю, что это проблема среды.

Первое – среда

Убедитесь, что ваш вызов в php artisan queue:listen (или queue:work , если применимо) использует правильную среду, поэтому используется правильная база данных:

 $ php artisan queue:listen --env=YOUR_ENV 

Вот сообщение о настройке очередей в Laravel 4, которые могут быть полезны для получения дополнительной информации.

Второе – пространство имен

Поскольку вы (видимо?) Не видите ошибок PHP, это менее вероятно, но другая идея:

Если ваш класс находится в пространстве имен, вам может понадобиться использовать символ \ чтобы получить ваши модели, которые находятся в глобальном пространстве имен.

 // From: $mailing = new Mailing(); // To: $mailing = new \Mailing();