我正在尝试将邮件列表从CSV导入到我的DATABASE。我的Laravel中有两个模型负责这样做:Target
和Mailing
(一个Target
有很多Mailing
s)
我正在使用Beanstalkd的Queue系统。我正在使用:
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 [] []
但是没有记录添加到我的数据库中。我应该如何在工作中使用模型?我已经在控制器中测试了它,例如,一切正常
答案 0 :(得分:4)
由于您没有看到其他错误,我认为这是一个环境问题。
确保您对php artisan queue:listen
(或queue:work
(如果适用))的呼叫使用正确的环境,以便使用正确的数据库:
$ php artisan queue:listen --env=YOUR_ENV
以下是setting up queues in Laravel 4上的帖子,可能有助于获取更多信息。
正如你(显然?)没有看到任何PHP错误,这不太可能,但另一个想法是:
如果您的类是命名空间,则可能需要使用\
字符来获取位于全局命名空间中的模型。
// From:
$mailing = new Mailing();
// To:
$mailing = new \Mailing();