Таблица семян Laravel из нескольких файлов CSV - PullRequest
0 голосов
/ 30 мая 2018

Я очень плохо знаком с Laravel и Database и пытаюсь понять, как вставить данные в мою базу данных.Пожалуйста, будьте терпеливы, вопрос может показаться вам глупым.

  1. STEP

Я создал таблицу в процессе миграции.Пример таблицы:

public function up(){

        Schema::create('job-urls', function (Blueprint $table) {
            $table->increments('id');
            $table->foreign('job_id')->references('id')->on('jobs');
            $table->string('url')->index();
            $table->string('hash');
            $table->timestamp('created_at')->nullable();
            $table->timestamp('updated_at')->nullable();
STEP

У меня есть два файла CSV, которые соответствуют полям url и hash, и я хочу вставить их.Я создал новый файл в миграции с именем populate_jobs_url

class PopulateJoburls extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up(){
        $fileurls = fopen('../data/urls.csv', 'r');
        $filehash = fopen('../data/urls_hash.csv', 'r');

        while (($row = fgetcsv($fileurls, 0, ',')) !=FALSE){
            DB::table('joburls')->insert(
            array(
                'url' => $row,
            )
            );
        }
        while (($row = fgetcsv($filehash, 0, ',')) !=FALSE){
            DB::table('joburls')->insert(
            array(
                'hash' => $row,
            )
            );
            }
    }

. Можете ли вы помочь мне понять, как я проверяю, правильно ли заполнена таблица?Правильный ли этот подход?Как я мог вставить данные в свою базу данных?К сожалению, все примеры в Интернете касаются вставки данных вручную с помощью формы.

Спасибо

1 Ответ

0 голосов
/ 30 мая 2018

Заполнение таблицы внутри файла миграции - не лучшая практика.Вы можете воспользоваться Seeders , который является правильным способом заполнить вашу таблицу тестовыми или фактическими данными.

Сначала создайте файл сеялки с помощью команды php artisan make:seeder PopulateJobUrls.Затем вы можете расположить сеялку следующим образом:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class PopulateJobUrls extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
     public function run()
     {
         $fileurls = fopen('../data/urls.csv', 'r');
         $filehash = fopen('../data/urls_hash.csv', 'r');

         // Rest of your seeding logic...
     }
}

Вы должны ссылаться на сеялку из database/seeds/DatabaseSeeder.php в методе выполнения:

$this->call(PopulateJobUrls::class);

Выполнить php artisan db:seed или, если хотитебудьте более конкретны, php artisan db:seed --class=PopulateJobUrls, и вы можете использовать правильно заполненные данные!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...