Laravel,数百万行插入和搜索

时间:2017-11-04 08:23:00

标签: php mysql laravel-5

所以,我需要使用faker在播种机中插入数百万行数据库。

最终,要搜索它们,例如:300多万人并按名称搜索它们。

如何使用Laravel实现这一目标?

2 个答案:

答案 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