昨天因為朋友來訪的緣故
完全趕不及,所以留下羞恥的記錄
總而言之今天要介紹的是artisan tinker操作
雖說php原本就有提供互動指令功能,稱之為REPL
但這樣的指令無法與專案的資料庫或model互動
所以在Laravel 4.1開始整合了Boris,
提供tinker互動指令功能
類似於Rails console
透過下面指令進入
$ php artisan tinker
下面都會以會員為例
>>> $user = User::create(array('name' => 'bater', 'email' => 'bater@gmail.com', 'password' => '1qaz2wsx'));
=> App\User {#765
name: "bater",
email: "bater@gmail.com",
updated_at: "2017-12-18 05:52:08",
created_at: "2017-12-18 05:52:08",
id: 2,
}
這是單行新增資料的方式
新增後會將物件的細節回傳印出
包含自動產生的時間戳記,排除密碼欄位
另外與rails一樣,有先找資料,找不到就建立的方法
// 找不到就新增
>>> $user = User::firstOrCreate(array('name' => 'John'));
// 找不到就產生一個實體,但還需要儲存
>>> $user = User::firstOrNew(array('name' => 'John'));
>>> User::all();
=> Illuminate\Database\Eloquent\Collection {#734
all: [
App\User {#744
id: 1,
name: "John",
email: "John@aaa.bb",
created_at: "2017-12-18 05:48:36",
updated_at: "2017-12-18 05:48:36",
},
App\User {#731
id: 2,
name: "bater",
email: "bater@gmail.com",
created_at: "2017-12-18 05:52:08",
updated_at: "2017-12-18 05:52:08",
},
],
}
目前我的資料庫沒有任何會員
等等新增後可以確認一下
跟其他語言不同的是
在官方範例結尾會加分號
雖然不加的話一樣可以執行,似乎沒有任何差別
>>> User::find(1);
// 也可以放陣列
>>> User::find([1,2]);
// 欄位、條件、值
>>> $users = User::where('id', '>', 0)
=> Illuminate\Database\Eloquent\Builder {#768}
這樣會得到一個集合
可以使用集合方法
// 計算數量
>>> $users->count();
=> 2
// 回傳內容
>>> $users->get();
=> Illuminate\Database\Eloquent\Collection {#732
all: [
App\User {#762
id: 1,
name: "John",
email: "John@aaa.bb",
created_at: "2017-12-18 05:48:36",
updated_at: "2017-12-18 05:48:36",
},
App\User {#747
id: 2,
name: "bater",
email: "bater@gmail.com",
created_at: "2017-12-18 05:52:08",
updated_at: "2017-12-18 05:52:08",
},
],
}
>>> $user = User::find(1);
>>> $user->name = 'new name';
>>> $user.save();
類似的方法,也可以用來新增資料
只要把第一行的find更改為$user = new User;
也可以直接update,這樣就可以省略save
>>> $user->update(['name'=>'new name'])
參考資料:
https://laravel.tw/docs/4.2/eloquent
https://www.slideshare.net/shengyou/10-eloquent-orm