【发布时间】:2014-05-04 13:58:51
【问题描述】:
我正在将一个非常旧的项目迁移到 laravel,我考虑将包含旧内容的数据库播种到新数据库中。
这是我如何为我的一张表执行此操作的示例:
<?php
class CallsTableSeeder extends Seeder {
public function run()
{
$hostname = 'localhost';
$username = 'root';
$password = 'root';
$link = mysql_connect($hostname, $username, $password);
mysql_select_db('olddatabase');
$callselect = 'SELECT * FROM calls';
$ressource = mysql_query($callselect);
$calls = array();
while($item = mysql_fetch_object($ressource))
{
$calls['id']=$item->id;
$calls['author_name']=$item->author_name;
$calls['comments']=$item->comment;
DB::table('calls')->insert($calls);
}
}
}
在我的 DatabaseSeeder.php 中有:
<?php
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
$this->call('MembersTableSeeder');
$this->command->info('The Members table has been seeded!');
$this->call('ContactsTableSeeder');
$this->command->info('The Contacts table has been seeded!');
$this->call('CallsTableSeeder');
$this->command->info('The Calls table has been seeded!');
$this->call('ClientsTableSeeder');
//and so on
}
}
问题是,当我执行 php artisan migrate:refresh --seed 时,我完成了迁移和第一个表的种子消息(它只有 8 行),但没有别的。该命令似乎在一段时间后停止,第二个表(调用)只会从我的旧表中获取一些值。似乎它有一个运行时间来阻止它对所有行进行循环,但我没有看到任何消息,它只是简单地停止,当我检查数据库时,除了插入的行数之外,一切似乎都是正确的(我错过了几千,这是一个大型数据库)。
也许这不应该是这样做的方式,但到目前为止,它似乎对这项工作有效,除了这个问题。如何让命令运行更长时间?
【问题讨论】:
标签: php mysql laravel laravel-4