Laravelでは、Tinkerを使ってデータベース上のテーブルを編集できます。これまでの記事では、データベースに直接入力を行ってテストをしてきました。
それでも良いのですが、Tinkerを使うことで、より便利にデータの追加や修正ができます。
いくつかコマンドを紹介します。
英語の豆知識
tinker(ティンカー)は英語で鋳掛け屋(金物の修理屋)、修繕屋、といった意味。実はあのピーターパンにでてくるティンカーベルの職業もティンカーです。
Tinkerの使い方
最初に次のコマンドを入力します。
| 
					 1  | 
						php artisan tinker  | 
					
ここから先は、tinkerコマンドワールドになります。
データを追加する(カラム1個)
すでにデータベースにdivisionsテーブルがあるとします。
divisionsテーブルには、入力するカラムが1か所だけだとします。そこにTinkerを使って、新たにデータを追加してみます。
次のように入力します。
| 
					 1  | 
						$division=new App\Models\Division  | 
					
divisionテーブルのnameカラムに”human resources”というデータを追加するには、次のように入力します。
| 
					 1  | 
						$division->name='human resources'  | 
					
trueという値が返ってきます。最後にsaveします。
| 
					 1  | 
						$division->save()  | 
					
trueという値が返ってきます。
データベースを確認すると、次のようにデータが挿入されています。

ふたつ目のデータを入力するときには、また $division=new App\Models\Division から繰り返します。
データを追加する(複数カラム)
入力するカラムが2か所あるaddressテーブルに、新たにデータを追加するとします。
次のように入力します。
| 
					 1  | 
						$address=new App\Models\Address  | 
					
ここから先は、addressテーブルの各カラムにデータを追加していきます。
addressテーブルのaddressカラムに”naushika village”というデータを追加するには、次のように入力します。
| 
					 1  | 
						$address->address="naushika village"  | 
					
値が返ってきます。
次にaddressテーブルのplayer_idカラムに”1″というデータを追加します。
| 
					 1  | 
						$address->player_id="1"  | 
					
値が返ってきます。
カラムをすべて入力し終えたら、最後に $address と変数を入力します。
入力中の項目が表示されます。最後にsaveします。
| 
					 1  | 
						$address->save()  | 
					
trueという値が返ってきます。
コマンド上では、次のように表示されています。

データベースにも、次のように追加したデータが挿入されています。(2行目)

データを検索する
divisionテーブルにいない状態でdivisionテーブル1番の内容を表示するには、App\Models\Divisionを付けて検索します。
| 
					 1  | 
						$division=App\Models\Division::find(1);  | 
					
次のように結果が返ってきます

リレーションがあるデータを検索する
Tinkerを使えば、リレーション先の値が取得できるかのテストも行えます。
たとえばユーザーテーブルとアドレステーブルの間でhasOneのリレーションが設定してあるとします。

この状態で、リレーションのチェックをしてみましょう。
まずは、Tinkerで下記を入力し、ユーザーid2番のユーザーを検索します。
| 
					 1  | 
						$user=App\User::find(2)  | 
					
このユーザーidに紐づいたAddressテーブル上のアドレスを取り出します。
Tinkerで下記を入力します。
| 
					 1  | 
						$user->address  | 
					
これまでデータベースに入力してある内容に基づいて、結果が返ってきます。

データを更新する
Tinkerによって、データを更新することもできます。
たとえば、divisionテーブル1番のデータの【name】カラムを “human resources”から “HR”に変更したいとします。

まずはデータを検索して、更新したいデータを取ってきます。
| 
					 1  | 
						$division=App\Models\Division::find(1);  | 
					
次に更新したい内容を入力します。
| 
					 1  | 
						$division->name="HR";  | 
					
更新後の値、”HR”が返ってきます。
保存します。
| 
					 1  | 
						$division->save()  | 
					

データベース上でも変更が確認できます。

データを削除する
最後は、Tinkerによるデータベース削除方法を紹介します。
たとえば、divisionテーブル1番のデータを 削除します。

まずはデータを検索して、更新したいデータを取ってきます。
| 
					 1  | 
						$division=App\Models\Division::find(1);  | 
					
データが表示されます。
次に削除のコマンドを入力します。
| 
					 1  | 
						 $division->delete()  | 
					
無事削除できた場合は、trueの値が返ってきます。

Tinkerをやめるには
tinkerをやめるには quitと命令を打ちます。
| 
					 1  | 
						quit  | 
					
元通り、laravelのコマンドを入力できるようになります。

さいごに
以上、Tinkerの使ってデータベースを操作する方法を解説しました。
データベースを開かなくても、データベース上の値を操作したり、テストできるのが良い点かとお澪ます。
ご紹介したとおりTinkerで値の追加もできますが、ただ、大量にテスト用データをいれる時には、ちょっと不便。
この場合には、LaravelにはFakerという超便利機能があります。こちらは、また別の記事で紹介していきますね。
  
  
  
  
