LoginSignup
24
31

More than 5 years have passed since last update.

Laravel5のお勉強 -第四回 モデルの作成/tinker紹介-

Last updated at Posted at 2015-10-12

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してみれば、データが入っているはずです。

以上。

24
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
31