Laravel 50 個小技巧 + Laravel 5.2 新功能

laravel

在學習 Laravel 階段,一定會天天看 Laravel Documentation,但是有很多小技巧是在文件內沒寫出來的,網路上找到這篇 50 Laravel Tricks in 50 Minutes,寫了 50 個 Laravel 小技巧,包含了 IoC Container, Blade, Eloquent, Middleware, Routing, Commands, Queues, Events, Caching 等模組。

當然作者最後不只介紹了 50 個小技巧,另外也展示了 Laravel 5.2 的新功能,像是可以在 Routing 內寫 Modle Binding,所以非常推薦大家看這 Slides。底下列出 Laravel 5.2 新功能

在 Routing 內可以直接 binding Model

Route::get('/api/posts/{post}', function(Post $post) {
    return $post;
});

scheduled tasks 支援 log 連續寫入檔案

$schedule->command('emails:send')
    ->hourly()
    ->appendOutputTo($filePath);

支援 Array 驗證

html 寫法如下

<p>
  <input type="text" name="person[1][id]">
  <input type="text" name="person[1][name]">
</p>
<p>
  <input type="text" name="person[2][id]">
  <input type="text" name="person[2][name]">
</p>

在 Laravel 5.1 要用 loop 方式驗證,但是 5.2 可以改寫如下

$v = Validator::make($request->all(), [
  'person.*.id' => 'exists:users.id',
  'person.*.name' => 'required:string',
]);

Collection 支援 Wildcards 功能

要讀取 posts 底下所有的 Title 可以寫成如下

$posts->pluck('posts.*.title');

Database Session Driver 多支援兩個欄位

資料庫 Session Driver 多支援 user_idip_address,這樣就可以很快速的清除單一帳號的 Session。

MySQL 支援 JSON Type

MySQL 5.7.8 之後支援 JSON Type,現在 Laravel 5.2 也會開始支援 JSON Type。