Laravel: Tinker

Trong bài viết này, tôi xin giới thiệu với tất cả bạn đọc một tính năng ít đươc biết đến của Laravel, tính năng này giúp bạn nhanh chóng đọc được dữ liệu ngay bên trong project của mình. Đó là Tinker của Laravel, để sử dụng được Tinker chạy lệnh:

  php artisan tinker

Tinker của Laravel artisan là một repl (read-eval-print loop)

Ví dụ, tôi có một vài câu lệnh xử lý với Database như sau:

  // see the count of all users
  App\User::count();

  // find a specific user and see their attributes
  App\User::where('username', 'samuel')->first();

  // find the relationships of a user
  $user = App\User::with('posts')->first();
  $user->posts;

Muốn xem được kết quả của những câu truy vấn trên, nhanh nhất chúng ta cũng cần tới vài thao tác xử lý. Tạo Controller, routes, Model, ...v.v. Tuy nhiên với php artisan tinker chúng ta có thể xem được kết quả đầu ra vô cùng nhanh chóng. Tinker cho phép chúng ta tương tác trực tiếp với ứng dụng của mình thông qua các lệnh như stop() hay dd() thậm chí là cả print_r().

Hướng dẫn sử dụng

  • Cài đặt project Laravel: Để xử dụng được Tinker trước tiên hay tạo một project của chính bạn đã:
  composer create-project laravel/laravel TinkerTest --prefer-dist
  • Database Setup: Running Migrations:

Sau khi tạo thành công một project mới, bạn cần tạo mới database và cài đặt migrations. Trong bài viết này, tôi sẽ dùng migrations mặc định của Laravel. Hãy đảm bảo rằng bạn đã cài đặt trong file .env để có thể chạy được migrations. Laravel đã tạo sẵn cho chúng ta migrations của 2 bảng là userspassword_resets. Tiến hành chạy migrations, từ root chạy lệnh:

php artisan migrate
  • Seeding our Database:

Laravel cung cấp cho chúng ta chức năng model factory cái mà chúng ta sử dụng để tiến hành seed database. Bây giờ, hãy bắt đầu với Tinker.

Từ thư mục root của project, chạy lệnh:

php artisan tinker

Lệnh này sẽ mở lên một relp, với relp vừa được hiển thị, chúng ta có thể chạy model factory và tiến hành seed database tại đó với lệnh:

factory(App\User::class, 10)->create();

Sau khi chạy xong lệnh trên trong relp, để chắc chắn là câu lệnh đã được thực thi, hãy vào datatabase và kiểm tra lại. Nếu có user mới được sinh ra tức là câu lệnh đã chạy đúng. Một collection của 10 user sẽ hiển thị bên trên màn hình nếu bạn gõ lệnh.

App\User::all();

Nếu muốn đếm tổng số lượng bản ghi có trong bản users, chạy lệnh:

App\User::count();

Sau khi chạy hai câu lệnh trên, relp sẽ hiển thị như sau:

  • Creating a New User:

Với relp, chúng ta cũng có thể tạo mới được một bản ghi trong bảng users, lưu ý rằng khi gõ code trong relp cũng tương tự như bạn đang gõ code trong project của mình vậy. Để tạo mới user thực hiện như sau:

$user = new App\User;
$user->name = "Canh dep trai";
$user->email = "[email protected]";
$user->save();

Hãy thử gõ $user trong relp, thông tin user vừa được khai báo sẽ hiển thị trên màn hình.

  • Deleting a User

Để xóa một user trong bảng users, thao tác;

$user = App\User::find(1);
$user->delete();
  • Reading a Function/Class Documentation

Với Tinker, bạn có thể xem document của một class hoặc một function. Tuy nhiên, nó phụ thuộc vào việc hàm hay là function của bạn có sử dụng DocBlocks hay không? Để làm được điều này:

doc <functionName> # replace <functionName> with function name or class FQN

Ví dụ, tôi muốn xem doc của function dd().

Nếu muốn chi tiết hơn, xem source code của một hàm hay một class.

show <functionName>

Tôi muốn xem hàm dd() viết cái gì ở trong

Trên đây chỉ là một vài chức năng của Tinker khi làm việc với database, còn nhiều tính năng vô cùng hữu ích khác nữa. Hãy cùng tìm hiểu và chia sẻ nhé. ^^