Laravel 5.3 có gì mới?

Laravel 5.3 dự kiến sẽ được ra mắt trong sự kiện Laracon US 2016 trong khoảng 27 – 29/07/2016.

Trong bài viết này mình sẽ tổng hợp lại những tính năng mới trong Laravel 5.3

1. Laravel Echo

Laravel Echo là một công cụ hỗ trợ việc kết hợp công nghệ WebSockets với các ứng dụng xây dựng trên nền Laravel của bạn trở nên dễ dàng hơn. Laravel Echo gồm 2 thành phần Laravel’s Event Broadcasting và JavaScript Library giúp cho việc xây dựng các ứng dụng thời gian thực trở nên dễ dàng hơn.

Hiện tại chưa có tài liệu cụ thể về Laravel Echo, bạn có thể tìm hiểu qua video giới thiệu của Taylor Otwell hoặc bài viết trên Matt Stauffer blog.

2. Biến $loop trong vòng lặp foreach

Trong Laravel 5.3 hỗ trợ xử lý vòng lặp dễ dàng hơn bao giờ hết khi thêm biến $loop. Nó gồm một số thuộc tính dưới đây.

  1. first: Trả về true nếu là phần tử đầu tiên trong mảng
  2. last: Trả về true nếu là phần tử của cuối của mảng
  3. index: Vị trí của phần tử trong vòng lặp, phần tử đầu tiên sẽ được đánh số thứ tự là 1
  4. count: Tổng số phần tử của mảng
  5. remaining: Số phần tử còn lại của mảng. Giả sử ta đang ở vị trí index là 5 thì remaining sẽ là n – 5.
  6. depth: Integer value of the depth of the loop.
  7. parent: Trả về 1 tham chiếu đến phần tử cha của $loop trong vòng lặp

Ví dụ 1:

[php]

@foreach($arrays as $item)

{{ $item->name }} – {{ $loop->index }} of {{ $loop->count }}

@endforeach

[/php]

Ví dụ 2:

[php]

@foreach($arrays as $item)

@if($loop->first)
The first item: {{ $item->name }}
@continue
@endif

@if($loop->last)
The last item: {{ $item->name }}
@continue
@endif

{{ $item->name }}

@endforeach

[/php]

 

3. Các phương thức truy vấn và cập nhật JSON column mới.

Trong Laravel 5.3 sẽ có một số cách mới để truy vấn và cập nhật dữ liệu dựa trên những thuộc tính của JSON

Ví dụ: chúng ta sẽ định nghĩa một cột trong bảng users có kiểu dữ liệu là JSON

[php]

Schema::create(‘users’, function (Blueprint $table) {
$table->increments(‘id’);
$table->json(‘about’);
});

[/php]

Khi query ra chúng ta sẽ được kết quả giống thế này.

[php]

{
"id": 1,
"about": {
"address": "Ho Chi Minh City",
"birthday": "03/26/1993",
"sex": true
}
}

[/php]

Khá là dễ dàng khi dùng where với cột about:

[php]

DB::table(‘users’)
->where(‘about->sex’, true)
->get();

[/php]

Thao tác cập nhật cũng khá là đơn giản:

[php]

DB::table(‘users’)
->where(‘about->sex’, ‘=’, true)
->update([‘about->sext’ => false]);

[/php]

 

4. Cho phép truyền thêm tham số cho hàm firstOrCreate

Bình thường chúng ta sẽ cần phải kiếm tra dữ liệu đã tồn tại chưa trước khi update một thuộc tính nào đó.

[php]

$user = User::firstOrNew([‘username’, ‘sangplus’]);

if (! $user->exists) {
$user->fill([‘address’ => ‘Ho Chi Minh City’])->save();
}

return $user;

[/php]

Nhưng trong Laravel 5.3 ta có thể làm nó cực kỳ đơn giản thế này:

[php]

return User::firstOrCreate(
[‘username’, ‘sangplus’],
[‘address’ => ‘Ho Chi Minh City’]
);

[/php]

5. Query Builder sẽ trả về 1 collection thay vì trả về một mảng các đối tượng

Trước đây trong Laravel 5.2 thì query builder sẽ trả về 1 mảng objects. Để chuyển đổi qua collection chúng ta phải dùng hàm collect. Trong Laravel 5.3 thì mặc định query builder đã trả về collection, điều này giúp cho việc thao tác với dữ liệu trả về dễ dàng hơn.

6. Một số tính năng khác

  • Load migrations từ một folder khác, không nhất thiết phải đặt trong thư mục database/migrations

[php]

$this->loadMigrationsFrom(‘path/to/your/migrations/folder’)

[/php]

  • Rollback migration theo từng bước

[php]

php artisan migrate:rollback –step=1

[/php]

 

Kết luận:

Trong bài này mình đã tổng hợp một số tính năng mới trong laravel 5.3, sau khi xem qua những tính năng trên chắc hẳn bạn đã thấy Laravel 5.3 là một bản cập nhật đáng giá chứ.

Laravel 5.3 sẽ sớm được release, lúc đó chúng ta sẽ được tiếp cận những tính năng trên.

Mình là 1 developer mới vào nghề, chưa có nhiều kinh nghiệm với lập trình web nhưng luôn muốn chia sẻ những hiểu biết của mình với các lập trình viên khác. Khá là gà và lười viết blog, chỉ ham code và chuyên Laravel.