Laravel 團隊昨天發佈了 v7.4.0 版本,其中包含至關多的新特性,例如自定義的模型轉換器接口、 When 高階集合代理,以及從查詢構建器中清除現有 order 的功能。php
Loris Leiva 貢獻了使用高階代理的能力,它的方法是 Collection::When()
node
// PR 中的相關代碼 $collection->when($condition, function ($collection) use ($item) { $collection->push($item); }); // 如今重構爲 $collection->when($condition)->push($item);
此 PR 使您可以連接其餘高階代理方法:laravel
// 之前 $collection->when($condition, function ($collection) { $collection->map->parseIntoSomething(); }); // 如今重構爲 $collection->when($condition)->map->parseIntoSomething();
Adrian Nürnberger 提供了一個控制檯測試方法,用於在命令行中詢問你的選擇。git
就像下面這樣:github
$name = $this->choice('What is your name?', ['Taylor', 'Dayle'], $defaultIndex);
以前你只能斷言此問題的回覆,不能測試選擇:架構
$this->artisan('question') ->expectsQuestion('What is your name?', 'Taylor') ->assertExitCode(0);
在 Laravel7.4,你能夠給出選項,像下面這樣作:學習
$this->artisan('question') ->expectsChoice('What is your name?', 'Taylor', ['Taylor', 'Dayle']) ->assertExitCode(0);
你還能夠在第四個參數傳入一個 boolean 類型的值,用來保證選擇順序測試
$this->artisan('question') ->expectsChoice('What is your name?', 'Taylor', ['Taylor', 'Dayle'], true) ->assertExitCode(0);
@props 擁有了自定義默認值的能力this
<!-- 之前的版本: --> @props(['type', 'message']) @php $type = $type ?? 'info' @endphp <!-- Laravel >=7.4 --> @props(['type' => 'info', 'message'])
Brent Roose 貢獻了一個 Castable 接口,容許 Castable
類型指定其基礎類:spa
// 之前 class ModelX extends Model { protected $casts = [ 'data' => CastToDTO::class . ':' . MyDTO::class, ]; } // 如今 class ModelY extends Model { protected $casts = [ 'data' => MyDTO::class, ]; } // 基礎類 use Illuminate\Contracts\Database\Eloquent\Castable; class MyDTO implements Castable { public static function castUsing() { return CastToDTO::class . ':' . static::class; } }
order
Jonathan Reinink 爲查詢構建器貢獻了一個 reorder()
方法,用於重置其 orderBy()
:
$query = DB::table('users')->orderBy('name'); $unorderedUsers = $query->reorder()->get();
從新排序容許您在雄辯的關係中定義默認順序,並可以在須要時取消:.
class Account extends Model { public function users() { return $this->hasMany(User::class)->orderBy('name'); } } // 刪除名稱 orderBy 和 order by email $account->users()->reorder()->orderBy('email'); // 一樣能夠寫成: $account->users()->reorder('email');
您能夠在下面看到新功能和更新的完整列表以及在 Github 上看到 [7.3.0 和 7.4.0] 之間的區別(https://github.com/laravel/framework/compa...)
更多學習內容請訪問: