一般常會呼叫某張DB中的tabel,例如要快速取得user中的id與name,搭配lists()的使用如下:
1 |
User::lists('name','id'); |
即可得到:
1 2 3 4 5 6 7 8 |
Array( [1] => User1, [2] => User2, . . . . ) |
但是lists只限於只能使用2個欄位的取存,如果需要更多欄位的話,則需要先定義好,在Laravel中稱為「accessors and mutators」(存取器和修改器)。
例如我是想要快速查出這樣的格式:
1 2 3 |
Array( [id] => displayname(username): email ) |
這需要使用到4個欄位:id、display_name、username、email。
我們需要先在user的model中定義好這個存取器(app/model/User.php):
1 2 3 4 |
public function getUserInfoAttribute() { $str = $this->display_name."(".$this->username.") : ".$this->email; return $str; } |
其中getUserInfoAttribute是需要駝峰式大小寫命名,意即你也可以定義成getXXXXXXXAttribute,接著在其他地方就可以直接呼叫user這個model中的存取器了,方法如下:
1 |
$user_info = User::get()->lists('user_info','id'); |
要注意的是在model中定義是使用駝峰式,而在使用時,需要用「_」,例如上面的「user_info」,即可得到:
1 2 3 4 5 6 7 8 |
Array ( [2] => msauer2(msauer2) : isadore09@gmail.com2 [3] => lavada183(lavada183) : aaltenwerth@gmail.com3 [4] => kyra246(kyra246) : taurean.sauer@hotmail.com6 [5] => amosciski7(amosciski7) : bswaniawski@hotmail.com7 [6] => maximo258(maximo258) : lwill@yahoo.com8 ) |
參考資料:
http://www.neontsunami.com/posts/using-lists()-in-laravel-with-custom-attribute-accessors