2015-10-30 2 views
1

Я создаю пользовательский пакет для Laravel, который должен получить некоторые данные по умолчанию (форматы размеров, качества, диапазоны цен) из базы данных, чтобы работать.Каков наилучший способ предоставления данных для пользовательского пакета Laravel?

Данные должны быть доступны для редактирования (например, изменение цены) приложением Laravel, поэтому его необходимо совместно использовать пакетом. Поэтому я создал некоторые миграции для таблиц, которые пакет должен будет использовать, но каков наилучший способ предоставить данные по умолчанию, которые будут заполнять таблицы?

ответ

0

Laravel обеспечивает посев http://laravel.com/docs/5.1/seeding для использования при использовании перемещений.

+0

Спасибо. Об этом я знаю, но есть ли у вас какие-либо методы или примеры того, как я могу засеять больший объем данных? Две из моих строк содержат большой объем информации, который используется при сложном вычислении. Лучше всего использовать сеялки при заполнении большого объема данных? – atlazor

+0

Я думаю, что буду использовать комбинацию вашего ответа и ответа fico7489. Я буду использовать миграцию, которая вызывает сеялку, как показано в [этом ответе] (http://stackoverflow.com/a/32856878/2083960) к аналогичному вопросу. – atlazor

+0

Это зависит от того, как выглядят ваши данные. Запись встроенных записей может быть скучной, запутанной и приведет к уродливому коду. Возможно, ваши данные могут быть сохранены в другом формате (csv, json) во внешнем файле конфигурации, частично в конфигурации приложения, а затем прочитать его в вашей миграции для посева. –

1

Put код высева для значений по умолчанию в миграции работает для меня, что-то вроде:

<?php 
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateVocabulariesTable extends Migration 
{ 

    public function up() 
    { 
     Schema::create('vocabularies', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name', 100)->nullable(); 

      $table->dateTime('created_at')->nullable(); 
      $table->dateTime('updated_at')->nullable(); 
      $table->softDeletes(); 
     }); 

     $records = [['id' => 1, 'name' => 'category'], ['id' => 2, 'name' => 'tag']]; 
     foreach ($records as $record) 
      \App\Models\Vocabulary::create($record); 
    } 

    public function down() 
    { 
     if (Schema::hasTable('vocabularies')){ 
      Schema::drop('vocabularies'); 
     } 
    } 
} 
+0

Спасибо. Я думал об этом, но, похоже, это хакки (я не знаю, почему я так думаю), но это может быть лучшим решением. Но есть ли у вас какие-либо методы или примеры того, как я могу вставить больший объем данных? Должен ли я предоставить дополнительный файл, содержащий все данные, а затем загрузить и вставить данные из указанного файла в код миграции? – atlazor

+0

Это вопрос организации кода, поэтому нет идеального решения. – fico7489

+0

Хорошо. Благодарю. Я думаю, что буду использовать комбинацию вашего ответа и ответ Карлоса Моры. Я буду использовать миграцию, которая вызывает сеялку, как показано в [этом ответе] (http://stackoverflow.com/a/32856878/2083960) к аналогичному вопросу. – atlazor