iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 14
1
Modern Web

新時代的網頁框架比較-- 淺談Rails、Django、Phoenix、Laravel系列 第 14

Laravel起步走:artisan tinker操作ORM練習

  • 分享至 

  • xImage
  •  

昨天因為朋友來訪的緣故
完全趕不及,所以留下羞恥的記錄
總而言之今天要介紹的是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


上一篇
Django起步走:基礎QuerySets
下一篇
Phoenix起步走:Changesets基本操作
系列文
新時代的網頁框架比較-- 淺談Rails、Django、Phoenix、Laravel31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言