所以,我需要使用faker在播种机中插入数百万行数据库。
最终,要搜索它们,例如:300多万人并按名称搜索它们。
如何使用Laravel实现这一目标?
答案 0 :(得分:0)
您可以使用以下内容为您的桌子播种;此示例使用模型工厂方便地生成大量用户,首先,创建UsersTableSeeder
:
use Illuminate\Database\Seeder;
use App\User;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(User::class, 1000)->create()->each(function() {
factory(User::class)->make();
});
}
}
在ModelFactory
:
use App\User;
/** @var \Illuminate\Database\Eloquent\Factory $factory */
$factory->define(User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'role' => rand(1, 3),
'remember_token' => str_random(10),
];
});
要运行播种机,请打开DatabaseSeeder
课程并添加以下内容:
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* if you get Reflection Exception: Seeder class not found, dump autoload files.
*
* @return void
*/
public function run()
{
$this->call(UsersTableSeeder::class);
}
}
然后,使用命令行运行:
php artisan db:seed
然后只执行查询以获取它们,例如:
User::where('first_name','Joe') -> first();
答案 1 :(得分:0)
您可以考虑将Laravel Scout与Algolia一起用于搜索索引。 您可以将其与模型保持同步。 https://laravel.com/docs/5.5/scout