メーリング リストを CSV からデータベースにインポートしようとしています。私のLaravelには、これを行う責任がある2つのモデルがあります:Target
およびMailing
(1つ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 [] []
しかし、データベースにレコードが追加されません。ジョブ内でモデルをどのように使用すればよいですか? たとえば、コントローラーで既にテストしましたが、すべて正常に動作します