#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;
とすれば、省略可能。