Laravel5のお勉強
第一回 環境構築
第二回 ControllerとViewの追加
第三回 Database連携(Mysql)
第四回 モデルの作成/tinker紹介
第五回 テストデータの挿入/Fakerの使用
第六回 CRUDの作成
第七回 Herokuにdeploy
第四回 モデルの作成/tinker紹介
前提条件
Mac OS yosemite
PHP 5.5以上
Mysql 5.6以上
目的
Laravel5のお勉強。
ここが公式の日本語翻訳サイト
今回は、テーブルを作成したので、そこにデータを流し込むためにModelを生成し、
MysqlにPHPからデータを流し込むところを学びます。
そしてついでに、対話型のtinkerを紹介し、tinkerを介して、Modelを生成 -> データ流し込みという流れでいきたいと思います。
Modelの生成
Databaseテーブルを作成したのなら、そのテーブルとリンクするModelが必要となります。
LaravelではModelにロジックとEntityを記載する立場となります。
php artisan make:model Article
テーブルは複数の記事が入るので、「Articles」ですが、Modelは一件の記事が対象となるため、
「Article」Modelを作成します。
上記コマンドを実行すれば、Modelは作られます。
モデルファイルは app ディレクトリの直下に作成されます。
これ、気持ち悪いなーって感じなんですが、指定できるのかな??例えば
php artisan make:model Blog/database/model/Article
とか??
試してみます。また今度。
とりあえず、ここではApp直下で進めます。
$ cat -n Article.php
1 <?php
2
3 namespace App;
4
5 use Illuminate\Database\Eloquent\Model;
6
7 class Article extends Model
8 {
9 }
この通り、空っぽのModelが作成されました。
これだけでArticlesテーブルを操作することが出来ます。
Modelの利用
tinkerを使って、Laravelで対話的にプログラムを発行し、Modelを生成 -> Mysqlに注入していきます。
tinkerとはLaravelでプログラムを対話的に扱える、ちょっとした動作確認に使える便利なシステムです。
Railsの**「rails c」で起動するirb**と似たようなものです。
$ php artisan tinker
Psy Shell v0.5.2 (PHP 5.5.27 — cli) by Justin Hileman
>>>
これで対話が始まります。
試しに
>>> $tmp = "aaa";
=> "aaa"
>>> strtoupper($tmp);
=> "AAA"
としてみよう。すると、$tmp変数にaaaが挿入され、$aaaにstrtoupper関数で「AAA」が取得されることがわかる。
このように、ちょっとしたAPI動作確認等にも使える便利な対話型プログラム、このようなものをREPL (Read-Eval-Print Loop)と呼びます。
ではModelを作成していこう。
>>> $article = new App\Article();
=> App\Article {#682}
>>> $article->title = "テスト1";
=> "テスト1"
>>> $article->body = "テストボディ1";
=> "テストボディ1"
>>> $article->published_at = Carbon\Carbon::now();
=> Carbon\Carbon {#684
+"date": "2015-10-12 01:52:54.000000",
+"timezone_type": 3,
+"timezone": "UTC",
}
>>> $article->toArray();
=> [
"title" => "テスト1",
"body" => "テストボディ1",
"published_at" => Carbon\Carbon {#684
+"date": "2015-10-12 01:52:54.000000",
+"timezone_type": 3,
+"timezone": "UTC",
},
]
>>> $article->save();
=> true
>>> App\Article::all();
saveで実際にMysqlにinsertが走ります。
Mysqlにloginして、selectしてみれば、データが入っているはずです。
以上。