在Laravel 4中大量保存记录?

时间:2014-02-15 16:17:04

标签: php laravel laravel-4

请考虑我在Laravel 4中的数据库结构......

$table->increments('id');
$table->integer('user_id');
$table->integer('campaign_id');
$table->string('location');
$table->string('color');
$table->string('contacts');
$table->string('pickups');
$table->string('interviews');
$table->string('guest_posts');
$table->string('book_review_opp');

我有一个Campaign表/模型,然后上面是属于Campaign Status's的{​​{1}}表/模型。

当我创建新广告系列时,我必须从上表中插入50多条记录,每个美国州都要插入1条记录。我还必须添加所有加拿大领土。

因此,当我创建一个记录时,当我编辑一个广告系列时,我会使用保存按钮为每个州显示这些设置。

保存记录后,必须保存50个州和加拿大地区。

我在问是否有更有效的方法可以同时保存所有大量的记录?

2 个答案:

答案 0 :(得分:2)

IMO,插入记录的最有效方式是:

DB::table('name')->insert(<array of 50 arrays>);

CampaignStatus::query()->insert(<array of 50 arrays>);

答案 1 :(得分:0)

您可以将状态编码为JSON,然后引入campaign-&gt; states列。 您需要做的就是$table->string('states'),然后是$campaign->states = json_encode($states_array);

您甚至可以设置accessor and mutator,以便插入状态的任何内容都是json_encode'd,然后在访问时进行解码