【发布时间】:2020-08-02 17:55:46
【问题描述】:
我需要在 SqLite 数据库中播种 Reg-Ex 模式。我正在使用 Laravel 7。 这是我的播种机:
<?php
use App\PhoneValidetionRules;
use Illuminate\Database\Seeder;
class PhoneValidetionRulesSeeder extends Seeder
{
public function run()
{
$rules = '
{
"iPhone": "\\biPhone\\b|\\biPod\\b",
"BlackBerry": "BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+",
"HTC": "HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel",
"Nexus": "Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6"
}';
$data = [];
foreach (json_decode($rules, true) as $key=>$value){
$data[] = [
'name' => $key,
'regex' => $value
];
}
PhoneValidetionRules::insert($data);
}
}
当我播种时,所有\b都转换为\x08。这是数据库:
这是表格蓝图:
Schema::create('phone_validetion_rules', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('regex');
});
如果我手动从 PhpStorm 更新正则表达式,它会正确插入。 如何使用 Laravel Seeder 将 Reg-Ex 插入数据库?
【问题讨论】:
标签: php database laravel sqlite eloquent