Có gì mới trong Laravel 5.8.12

Có gì mới trong Laravel 5.8.12

Nhóm Laravel đã phát hành phiên bản thứ 400 của Laravel (v5.8.12) vào ngày hôm qua với phương pháp thu thập duplicates() mới và các tính năng mới khác, sửa lỗi và thay đổi khung.

Đầu tiên, một phương thức duplicates() mới đã được thêm vào Illuminate\Support\Collection class.

collect([1,2,1,1,1])->duplicates();
=> Illuminate\Support\Collection {#2938
     all: [
       2 => 1,
       3 => 1,
       4 => 1,
     ],
   }

Nó hoạt động bằng cách trả về các chỉ mục của các giá trị trùng lặp từ object gốc:

$item[0] = 1 is not a duplicate
$item[1] = 2 is not a duplicate
$item[2] = 1 is a duplicate
$item[3] = 1 is a duplicate
$item[4] = 1 is a duplicate

Tương tự, một phương thức  duplicates() mới đã được thêm vào Eloquent collection class, sử dụng $model->is($another) để kiểm tra các bản sao. Dưới đây, một ví dụ từ PR#28194:

use App\User;

$one = User::find(1);
$two = User::find(1);
$three = User::find(1);

$users = (new User)->newCollection([$one, $two, $three]);

=> Illuminate\Database\Eloquent\Collection {#2936
     all: [
       1 => App\User {#2929
         id: "1",
         name: "Admin",
         email: "[email protected]",
         email_verified_at: null,
         created_at: "2019-04-16 23:33:30",
         updated_at: "2019-04-16 23:33:30",
       },
       2 => App\User {#2927
         id: "1",
         name: "Admin",
         email: "[email protected]",
         email_verified_at: null,
         created_at: "2019-04-16 23:33:30",
         updated_at: "2019-04-16 23:33:30",
       },
     ],
   }

Tiếp theo, một phương thức getViews() mới đã được thêm vào FileViewFinder class, cho phép bạn truy xuất tất cả thông tin chế độ xem từ các chế độ xem hiện đang được tải. Không có gì mới ở đây ngoại trừ khả năng truy cập thuộc tính $view thông qua phương thức getViews ().

Kể từ phiên bản Laravel 5.8.11, exit code được ghi lại trong scheduled command events, dẫn đến PR mới cung cấp một số helpers có sẵn cho scheduler:

$schedule->command('my:command')
        ->onSuccess(function () {
            // do something when scheduled command ran successfully
        })
        ->onFailure(function () {
            // do something when scheduled command failed
        })
        ->pingOnSuccess('https://example.com')
        ->pingOnFailure('https://example.com')
        ->emailOnFailure('[email protected]')
    ;

Phương thức emailOnFailure() rất hữu ích khi bạn chỉ muốn nhận email cho scheduled commands được lên lịch không thành công trái ngược với phương thức emailOutputTo được gửi bất kể kết quả của tác vụ là gì. Các phương pháp scheduler mới đã được thêm vào scheduling documentation.

Tiếp theo, kiểu dữ liệu SET (SET datatype) đã được thêm vào cú pháp MySQL (tìm hiểu thêm về Kiểu SET):

Schema::create('table_name', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->set("field_name", [ "Possible", "Values" ]);
    $table->timestamps();
});

Tính năng mới cuối cùng trong bản phát hành này là bổ sung các toán tử innot in, có thể được chuyển dưới dạng chuỗi cho query builder:

// these two calls produce the same query
$query->where('foo', 'in', [1, 2]);
$query->whereIn('foo', [1, 2]);

// these two calls produce the same query
$query->where('foo', 'not in', [1, 2]);
$query->whereNotIn('foo', [1, 2]);

Bạn có thể xem danh sách đầy đủ các bản sửa lỗi bên dưới và toàn bộ khác biệt giữa 5,8.11 và 5,8.12 trên GitHub. Các ghi chú phát hành đầy đủ cho Laravel 5.8 có sẵn trong thay đổi GitHub 5.8:

v5.8.12 changelog:

Thêm:

  • Illuminate\Support\Collection::duplicates() (#28181)
  • Illuminate\Database\Eloquent\Collection::duplicates() (#28194)
  • Added Illuminate\View\FileViewFinder::getViews() (#28198)
  • Added helper methods onSuccess() \ onFailure() \ pingOnSuccess() \ pingOnFailure() \ emailOnFailure() to Illuminate\Console\Scheduling\Event (#28167)
  • Thêm SET datatype vào cú pháp MySQL (#28171)
  • Thêm in, not in vào query builder (#28192)

Sửa lỗi

  • Đã sửa lỗi rò rỉ bộ nhớ trong các truy vấn JOIN (#28220)
  • Đã sửa lỗi phụ thuộc vòng tròn trong Support\Testing\Fakes\QueueFake cho các phương thức không xác định (#28164)
  • Đã sửa lỗi ngoại lệ trong xác thực lt \ lte \ gt \ gte validations với các loại khác nhau (#28174)
  • Đã sửa lỗi trích dẫn chuỗi cho SQL Server (#28176)
  • Đã sửa lỗi WhereDay và whereMonth khi truyền các giá trị int (#28185)

Thay đổi

  • Đã thêm autocomplete attributes vào các html stubs (#28226)
  • Cải thiện event:list command (#28177cde1c5d)
  • Đã cập nhật Illuminate\Database\Console\Factories\FactoryMakeCommand để tạo thêm mã thân thiện với IDE (#28188)
  • Đã thêm LockProvider interface bị thiếu trên DynamoDbStore (#28203)
  • Thay đổi session’s user_id thành số nguyên lớn không dấu trong stub (#28206)

Post Comment