初めてのフレームワーク-Laravel5-5 DBアクセスメモ

#DB作成の度にチェックしてたので、メモ
参考サイト：
[ララ帳](https://laravel10.wordpress.com/)
[Laravel5.1日本語マニュアル](http://readouble.com/laravel/5/1/ja/database.html)


##データベース作成##
ターミナルで操作
1.MySQLをインストール（homebrewで入れると良い)
2.``mysql.server start``　でMySQLを起動
3.``mysql -u root -p``　でMySQLにログイン
4.``CREATE DATABASE test_db(データベース名);``　でデータベース作成
5.``quit``　でログアウト

6.".env"を開いて、

```php
DB_HOST=127.0.0.1
DB_DATABASE=test_db
DB_USERNAME=root
DB_PASSWORD=
```
に変更。

##テーブル作成##
7.``php artisan make:migration create_tests_table(ファイル名) --create=tests(テーブル名)``を実行。

8./database/migrations/に　"作成日_create_tests_table.php"ができるので、create関数内に加えたいカラム名を追加。
 ・``$table->softDeletes();``  で delete atカラム追加(論理削除カラム)
 ・``$table->integer('カラム名');``　でint型のカラム追加
 ・``$table->string('カラム名');``　でvarchar型のカラム追加

9.``php artisan migrate``を実行すると、テーブルができる。

###テストデータ挿入###
10.```php artisan make:seeder TestTableSeeder ```を実行。

11./database/seeds/に　"TestTableSeeder.php"ができるので、
テストデータを記述していく。
下みたいに書くと良さそう。

```php

use Illuminate\Database\Seeder;
use Faker\Factory as Faker;

class TestTableSeeder extends Seeder
{
  function run()
    {
        DB::table('tests')->delete();

        $faker = Faker::create('ja_JP');

        for($i=0; $i<10; $i++)
        {
            DB::table('tests')->insert([
            'name' => $faker->name(),
            'kana' => 'テスト',
            'email' => $faker->email(),
            'password' => $faker->password(),
            'tel' => $faker->phoneNumber(),
            'address' => $faker->address(),
            'staff_comment' => $faker->paragraph(),
            ]);
        }
    }
}
```

11./database/seeds/DatabaseSeeder.phpに今作ったファイルを読み込むように記述する。

```php
    public function run()
    {
        Model::unguard();

        $this->call(TestTableSeeder::class);
        
        Model::reguard();
    }
```

12.``php artisan db:seed``を実行。するとテストデータが挿入されている。
＊　githubから取得したseederファイルを利用する場合、ターミナルで
``composer dump-autoload``を実行してから行わないとエラー出るかも。
＊　``php artisan migrate:refresh --seed``を使うと、テーブル全削除して、再度テストデータ挿入してくれるので、一度全部リセットしたい時便利。

##モデルクラス作成、DBアクセス##
13.``php artisan make:model Test``を実行すると、/app直下にtest.phpが作成される。

14.後は適当に、
app/Http/route.php

```php
Route::get('/test', 'TestController@show');
```
app/Http/Controllers/TestController

```php

namespace App\Http\Controllers;

use Illuminate\Routing\Controller as BaseController;
use App\Test;

class TestController extends BaseController
{
  public function __construct(Test $test)
  {
    $this->test = $test;
  }

  public function show()
  {
    $test = $this->test->all();
    dd($test);
  }
}

```

``php artisan serve``して、
http://localhost:8000/test
を表示すれば、DBにアクセスできているのが確認できる。


##DBデータのキャッシュ化##
キャッシュの保存

```php
\Cache::remember('cacheName', 60, function() {
    return \DB::table('tableName')->get();
});
```

60はキャッシュの保存期間

もちろんDBデータ整形して、キャッシュ化も可能。

```php
\Cache::remember('cacheName', 60, function() {
    return $this->modifyData();
});

private function modifyData()
{
    $tableData = \DB::table('tableName')->get();
    //適当な整形処理。
    return $tableData;
}
```

キャッシュの利用

```php
\Cache::get('cachename');
```

キャッシュを消す
``php artisan cache:clear``

ちなみに \ は、
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Cache;
とすれば、省略可能。