簡體   English   中英

數據庫播種機未在 Laravel 中插入正確的數據

[英]Database Seeder not inserting correct data in Laravel

我需要在 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 插入數據庫?

為什么不像這樣用json_encode()插入它們

'regex' => json_encode($value)

如果您正在尋找,數據將像"\biPhone\b|\biPod\b"一樣插入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM