Laravel体験記:データベース

SQLiteを使う

 cd database/
 sqlite3 database.sqlite

これでSQLiteファイルができるようだ。

あとはcreatetableなどしていく。

config/database.php

SQLiteを使うように、Laravelの設定を変更

    'default' => env('DB_CONNECTION', 'sqlite'),

.env

.envファイルに入っている環境変数も修正しないといけないらしい。

DB_CONNECTION=sqlite
DB_DATABASE=homested

DB_DATABASEは消すこと。消さないと、

Database does not exist.

と怒られ続ける。これで30分はつまった。DB_DATABASEにフルパス入れても怒られた。消さないとダメ。

DBクラスを使う

DB::select('select * from テーブル名');

コントローラからでも使える。

DB::insertとDB::updateももちろんある。

クエリビルダ

必要性を感じなかったのでパス。

マイグレーション

php artisan make:migration create_people_table

作られたファイルはdatabaseフォルダにあるようだ。

こんなのができてた。

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePeopleTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('people', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('people');
    }
}

upはテーブルを生成する時に使うらしい。downは削除。

downとか使うときあるのだろうか。

    public function up()
    {
        Schema::create('people', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('mail');
            $table->integer('age');
            $table->timestamp();
        });
    }

こうなった。

stringがTEXT型になるのだろうか。

マイグレーションの適用

php artisan migrate

疑問

  • Master/Slave構成にするときはdatabase.phpをどういじればええんやろうか。

  • Controllerから直接SQL発行してたけど、モデル的なクラスにもたせたい場合はどうしたらいいのだろう。

  • マイグレーション、varchar(255)とかはどうやるんだろう。

  • マイグレーションって、もしカラムを追加したら勝手に追加されるってことだろうか。だとしたら、意図せず高負荷になっちゃうときありそう。

  • マイグレーションって一人で作る個人サービスにはいらなそう。