2015.12.29
0からはじめるPHP#65【データベースの初期登録-SeedとFaker-】
ほんとはこれもっと最初にやっておいても良かったかも知れませんね。
ということで、今回はシーディングについてです。
これは何かっていうと、ざっくり言えば
データベースにダミーデータを埋め込むという作業です。
最初にある程度の大きさのデータを用意しておかないとやりづらいですもんね。ということでこれを実装します。
まず
./database/seedsに
DatabaseSeeder.phpってのがあります。
これがシーダーですね。こいつを書き加えます。
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for($i=0;$i<10;$i++){
DB::table("tablename")->insert([
"data"=>rand(1,100)
//略
//
]);
}
}
}
雰囲気としてはこんな感じです。ただクエリービルダーをfor文で回しているだけです。
このシーダーを実行するには、まぁ
マニュアルにも書いてありますけどコマンドプロンプトで
php artisan db:seedを実行すれば良いだけです。めちゃくちゃ簡単ですね。
これだけでも充分に使えるんですが、さらに
Fakerってのを使うともっと便利になります。
これはその名の通りダミーデータを作るものなんですが、
名前や住所までダミーデータ化できるってのが面白いんですよね。
つまり自分で構造を考えなくても、テキトーにそれっぽいものを作ってくれる、っていう点が非常に面白いです。Laravel5には標準で入ってるので使っちゃいましょう。
use Illuminate\Database\Seeder;
use Faker\Factory as Faker;//これを追加
use Illuminate\Support\Facades\DB;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$faker = Faker::create("ja_JP");//Fakerのインスタンスを作る 引数で使う言語を選ぶ
for($i=0;$i<10;$i++){
DB::table("table")->insert([
"name"=>$faker->name,//「苗字 名前」の日本語名が入る
"mail"=>$faker->email,//メールアドレスも作ってくれます
"password"=>$faker->password,//パスワードもあります
"title"=>$faker->sentence(),//ダミー文もあります。これは一文ですが、他にも文章生成とかもできます。
"Datetime"=>$faker->date($format='Y-m-d',$max='now')//ランダムで日時まで入れられたりします。
]);
}
}
}
実際にFakerを使って生成したのがこちらのユーザーデータです。
自分でやるよりも「それっぽいもの」を「簡単に」データとして出してくれるので、すごく使いやすいと思います。
データベースを全削除して初期値としてダミーデータを設定することもできるので、後からの変更にも対応できますね。
やはりフレームワーク使うとこういうとこですごいラクできるなぁ・・・・・・と実感しちゃいますね。
>>
実は年明けに
今度こそ伊豆に行こうかと思っているって話をしたと思うんですが、よくよく考えたら
わざわざクソ寒い冬に行かなくても春行ったらええやんという事実に気づいてしまったので早々に諦めました。
しかし冬休みに基本的にプログラミングぐらいしかやることがなく、気晴らしに家で楽器弾いたりしてるんですが限度があります。ということでやっぱ旅行したい。
でも
年末年始に満足に旅行できる旅行先が存在しないという理由で結局何もできなかったりするんですよね。バイクでちょっと遠い山かなんかに行ってハイキングを楽しむというのも一つの手だったんですけど、ご飯とかお店やってなかったりすると切ないですしね。食は大事です。
ほんと年末年始って何のために存在してるんですかね。(何)
さて、お気づきの方はいるかも知れませんが
トップページに記事の全タイトルを表示させることにしました。
全部同じサイズだと割と見づらかったので見出し記事以外はフォントサイズを小さくしてます。
この冬休みはプロダクト開発をメインにしようと思ってるんですが
トップページもちょっと弄ろうかなと思ってるんですよね。
具体的には左メニューやスマホ版の構造とか、Bootstrapを使ってリファインしようかなと。あくまでもそういう計画、ってだけなんですけどね。
ちなみに日記記事の遅延ロード
(要するに下にスクロールしたら過去記事が読み込まれる機能)を実装する計画もありましたが
僕の技術力じゃ不可能だったのでやめました。(何)
phpの仕組み的に厳しいとは思うんですが、javascriptで何とかできないか探しても無理でした\(^o^)/
やろうと思えば恐らく出来ますが、現状のシステムだとたぶん不可能な気がします。
いつかその道のプロを雇って何とかしてもらう計画にしました。
一般的なブログのような、記事投稿型にすると余裕でできるんですが
(htmlを読み込むだけなら何の問題もないですしね)オフラインで作業する方が僕の性には合ってますし、何よりも手軽なので・・・・・・。
ただ、トップページを下にスクロールしていっても左メニューが追随する機能はやっぱあった方がいいかなとは思いますし、スマホ版もメニューをヘッダーにした方が使いやすいんじゃないかなとかいろいろアイデアはありますんで、気が向いたらやろうかなと。
ええ、スマホの画面が小さいと横スクロールが発生してしまう仕様は気づいていますので・・・・・・ええ・・・・・・。(遠い目)
こんな風にちょいちょいと微調整をしていこうかなと思ってます。
デザイン自体は結構気に入ってるので多分あと数年は変わんないと思います。(笑)