Laravel tinker Basic Usage

テスト用データベースを作成

php artisan make:model Test -m

php artisan migrate

(phpmyadmin-ctl install)

tinkerを起動

php artisan tinker

tinker console内で...

$test = App\Test::create();

=> App\Test {#715
updated_at: "2017-05-08 05:43:30",
created_at: "2017-05-08 05:43:30",
id: 1,
}

データベースにデータが作成される

 

$user = new App\User

  > App\User {#678}
>>> $user->name = "tinker_test"
  => "tinker_test"
>>> $user
  => App\User {#678
  name: "tinker_test",
  }
>>> $user->save()

オブジェクトを作成してデータをセーブしていく方法もある。

-------------------------------------------------------------------------------------------

コマンド

$test = App\Test::find(1);

$test = App\Test::where('id', 1)->first();

$test = App\Test::whereId(1)->first(); (上に同じ)

$test->id=2;

一時データのidが2にupdate

$test->save();

データベースに反映される

$test->delete();

即データベースから削除される。soft_deleteが有効ならdeleted_atに値が入る。

soft-deleteを有効にしたいならmigrationファイルに別途カラム$table->softDeletes();を追記→カラムdeleted_atが付加される。

<<<< soft-delete時 >>>

$test->delete();

$test = App\Test::onlyTrashed()

soft-deleteされたオブジェクトへ

$test->forceDelete();

soft-deleteを完全に削除

-----------------------------------------------------------------------------------------------------------------

Eloquent ORM relationships を設定したDBの場合、例えば....

App\User

.....    public function messages ()

        {

              return $this->hasMany(Message::class);

        }

App\Message

......   public function user ()

         {

              return $this->belongsTo(User::class);

         }

と設定。tinkerからの操作は...

$user=App\User:::find(1)->messages()->create(['message' => 'from tinker'])

    => App\Message {#687
    message: "from tinker",
    user_id: 9,
    updated_at: "2017-05-08 11:21:02",
    created_at: "2017-05-08 11:21:02",
    id: 1,
    }

$user=App\User::find(1)->messages

    => Illuminate\Database\Eloquent\Collection {#704
    all: [
    App\Message {#694
    id: 1,
    created_at: "2017-05-08 11:21:02",
    updated_at: "2017-05-08 11:21:02",
    message: "from tinker",
    user_id: 9,
   },
    ],
    }