まとめ
- krlove/eloquent-model-generator: Eloquent Model Generator
- DB コネクションを指定できるため、MySQL や PostgreSQL などの複数の DB に対応することができる。
- データベーステーブルから、モデルファイルを生成することができる。
- 以前のような、データベースのテーブルやレコードを操作するものではない。
composer require orangehill/iseed --dev
実際は次のようになりました。注意点は前回と同じです。
$ docker-compose run --rm composer require orangehill/iseed --dev
Using version ^2.6 for orangehill/iseed
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing orangehill/iseed (v2.6.1): Downloading (100%)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating optimized autoload files
*******************************************
/!\ Warning, you're using a deprecated
¨¨¨ version of Carbon, we will soon stop
providing support and update for 1.x
versions, please upgrade to Carbon 2.
*******************************************
Most features of Carbon 1 are still available in Carbon 2.
See how to migrate: https://carbon.nesbot.com/docs/#api-carbon-2
Please consider upgrading your Laravel dependencies to be compatible with Carbon 2:
- laravel/framework at least to version 5.8.0
If you can't update Laravel, check https://carbon.nesbot.com/ to see how to
install Carbon 2 using alias version and our adapter kylekatarnls/laravel-carbon-2
You can run './vendor/bin/upgrade-carbon' to get help in updating carbon and other frameworks and libraries that depend on it.
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: orangehill/iseed
Package manifest generated successfully.
# php artisan help iseed
Usage:
iseed [options] [--] <tables>
Arguments:
tables comma separated string of table names
Options:
--clean clean iseed section
--force force overwrite of all existing seed classes
--database[=DATABASE] database connection [default: "mysql"]
--max[=MAX] max number of rows
--chunksize[=CHUNKSIZE] size of data chunks for each insert query
--exclude[=EXCLUDE] exclude columns
--prerun[=PRERUN] prerun event name
--postrun[=POSTRUN] postrun event name
--dumpauto[=DUMPAUTO] run composer dump-autoload [default: true]
--noindex no indexing in the seed
--orderby[=ORDERBY] orderby desc by column
--direction[=DIRECTION] orderby direction
--classnameprefix[=CLASSNAMEPREFIX] prefix for class and file name
--classnamesuffix[=CLASSNAMESUFFIX] suffix for class and file name
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--env[=ENV] The environment the command should run under
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Help:
Generate seed file from table
#
必ずテーブル名を指定しなければならないのが少し面倒ですけれども、使い方自体は簡単でした。
# php artisan iseed wp_commentmeta,wp_comments,wp_links,wp_options,wp_postmeta,wp_posts,wp_term_relationships,wp_term_taxonomy,wp_termmeta,wp_terms,wp_usermeta,wp_users
Created a seed file from table wp_commentmeta
Created a seed file from table wp_comments
Created a seed file from table wp_links
Created a seed file from table wp_options
Created a seed file from table wp_postmeta
Created a seed file from table wp_posts
Created a seed file from table wp_term_relationships
Created a seed file from table wp_term_taxonomy
Created a seed file from table wp_termmeta
Created a seed file from table wp_terms
Created a seed file from table wp_usermeta
Created a seed file from table wp_users
#
結果、 database/seeds/ に上記のファイルが追加され、さらに、 database/seeds/DatabaseSeeder.php に上記ファイルを実行するように追記されていました。
例えば database/seeds/WpCommentsTableSeeder.php は次のようになりました。
<?php
use Illuminate\Database\Seeder;
class WpCommentsTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
\DB::table('wp_comments')->delete();
\DB::table('wp_comments')->insert(array (
0 =>
array (
'comment_ID' => 1,
'comment_post_ID' => 1,
'comment_author' => 'WordPress コメントの投稿者',
'comment_author_email' => 'wapuu@wordpress.example',
'comment_author_url' => 'https://wordpress.org/',
'comment_author_IP' => '',
'comment_date' => '2019-06-02 10:24:29',
'comment_date_gmt' => '2019-06-02 01:24:29',
'comment_content' => 'こんにちは、これはコメントです。
コメントの承認、編集、削除を始めるにはダッシュボードの「コメント画面」にアクセスしてください。
コメントのアバターは「<a href="https://gravatar.com">Gravatar</a>」から取得されます。',
'comment_karma' => 0,
'comment_approved' => '1',
'comment_agent' => '',
'comment_type' => '',
'comment_parent' => 0,
'user_id' => 0,
),
));
}
Laravel 5.5 既存のデータベースからマイグレーションファイルを一発で生成した手順 – oki2a24 で疑問視したように、マイグレーションファイルで既存のデータベースの情報をマイグレーションファイルとして生成したとしても、データベースレコードも使いたい場合は意味がありません。レコードも抽出できれば良いのに、という問題がありました。
今回の投稿はそれを解決するものとなります。
ただ、シーダークラスファイルは、どちらかというとテスト用のデータを気軽に作るための用途が一般的なように感じます。
既存のデータベースのレコード数が非常に大きな場合、シーダークラスファイルに抽出して、というのはシーダークラスファイルの大きさが非常に大きくなり、また、DB へ入れる際にも非常に時間がかかると予想されるため、良い方法とは言えないと思います。
そうなると使いどころですけれども、アプリをリリースする準備段階として、余計なデータベースデータを削除して、残した設定系のマスタデータをシーダークラスファイルとして逆生成する、というのは、良い使い道ではないでしょうか。
既存のデータベースを使ったままのシステムリプレース業務の場合は、マイグレーションクラスやシーダークラスのファイルをデータベースから逆生成する意味は薄いように感じました。
最後に、参考ページです。このページのおかげで、 Inverse seed generator (iSeed) を見つけることができました。
以上です。
.
を指定する。composer create-project --prefer-dist laravel/laravel . "5.5.*"
From php:apache RUN apt-get update && apt-get install -y \ unzip \ zlib1g-dev \ && docker-php-ext-install \ zip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* RUN curl -s http://getcomposer.org/installer | php && \ mv composer.phar /usr/local/bin/composer
これが最低限必要なものを追加した Dockerfile と思いますが、ちょっと及び腰で念の為という気持ちで、利便性や、参考ページにあったものも一応追加したものが次となります。
echo "export PATH=${PATH}:/var/www/vendor/bin" >> ~/.bashrc && \
も無くてもよいと思う (未検証) が、一応入れた。From php:apache RUN apt-get update && apt-get install -y \ git \ unzip \ zlib1g-dev \ && docker-php-ext-install \ zip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* RUN curl -s http://getcomposer.org/installer | php && \ echo "export PATH=${PATH}:/var/www/vendor/bin" >> ~/.bashrc && \ mv composer.phar /usr/local/bin/composer
cp env-example .env
すること次のアプリが使用可能なこと