9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-09-24

#DB作成の度にチェックしてたので、メモ
参考サイト:
ララ帳
Laravel5.1日本語マニュアル

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

6.".env"を開いて、

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"ができるので、
テストデータを記述していく。
下みたいに書くと良さそう。


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に今作ったファイルを読み込むように記述する。

    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

Route::get('/test', 'TestController@show');

app/Http/Controllers/TestController


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データのキャッシュ化##
キャッシュの保存

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

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

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

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

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

キャッシュの利用

\Cache::get('cachename');

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

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

9
9
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
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?