Share This
//Cách dân dev “chơi” Tinker Laravel

Cách dân dev “chơi” Tinker Laravel

Tinker là gì?

Laravel Tinker is a powerful REPL for the Laravel framework, powered by the PsySH package.
— Laravel Doc

Laravel Tinker là một công cụ trong việc tương tác với cơ sở dữ liệu mà không cần tạo các tuyến đường (routes). Laravel Tinker được sử dụng cùng với “PHP artisan” để tạo đối tượng hoặc chỉnh sửa dữ liệu. “PHP artisan” là một giao diện dòng lệnh có sẵn trong Laravel. Tinker là một công cụ dòng lệnh làm việc với “PHP artisan”. Một Tinker cho phép bạn tạo đối tượng, chèn dữ liệu vào cơ sở dữ liệu, v.v…

Khi nào dùng đến Tinker?

Khi người phát triển phần mềm muốn xem được kết quả của những câu truy vấ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 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 dữ liệu qua ứng dụng của mình cần sử dụng các lệnh như stop() hay dd() thậm chí là cả print_r().

Làm thế nào Tinker hoạt động?

Để bắt đầu với Tinker, chỉ cần mở terminal và chạy lệnh php artisan tinker. Điều này sẽ mở ra một môi trường tương tác dòng lệnh cho bạn. Tại đây, bạn có thể viết và chạy các lệnh PHP để thao tác với ứng dụng Laravel của mình. Hãy thử gõ lệnh User::all() để lấy tất cả người dùng trong cơ sở dữ liệu của bạn. Bạn sẽ nhận được một danh sách các đối tượng người dùng trong ứng dụng của mình. Thật đơn giản và nhanh chóng, phải không?

php artisan tinker

1. Query database

  • Query theo điều kiện (nhiều điều kiện):

\App\Models\Post::query() \

  ->with(‘user’) \

  ->where(‘count_view’, ‘>’, 200) \

  ->whereRaw(‘month(created_at) = ?’, [Carbon\Carbon::now()->month]) \

  ->orderByDesc(‘count_view’) \

  ->limit(10) \

  ->get(); 

  • Tạo thêm record:

$user = new App\Models\User;

$user->email = “[email protected]

$user->name = “RCVN”

$user->password = \Hash::make(‘gX6JgDbmNd)97FS*’)

$user->save();

  • Xoá record trong database:

$user = App\Models\User::where(‘name’, ‘like’, ‘%leone%’)->first(); 

$user->delete();

2. Viết function trong Tinker

Một function thường sẽ gồm nhiều dòng, nhưng nếu xuống dòng bằng enter thì Tinker sẽ hiểu đó là kết thúc câu lệnh. Vì vậy, để viết function trong Tinker, bạn có thể sử dụng \ để kết thúc từng dòng lệnh và bắt đầu dòng tiếp theo.

function sayHelloName($userId) { \

$user = App\Models\User::find($userId); \

return “Hello {$user->name}”; \

}

> sayHelloName(101)

= “Hello RCVN”

3. Up site/down site trong 1 nốt nhạc (chế độ bảo trì)

Đưa website về với cát bụi.

Sau khi duyệt các bé bug thì “up” website lên nào.

4. Xem source code của một function hay một class

show <functionName>

5. Các lệnh Tinker

Giống như ứng dụng dòng lệnh Artisan, Tinker cung cấp nhiều lệnh và tiện ích khác nhau giúp đơn giản hóa quá trình gỡ lỗi và thực thi mã từ dòng lệnh. Bảng dưới đây liệt kê tất cả các lệnh mà Tinker cung cấp (các lệnh này có thể được khám phá trong Tinker REPL bằng cách sử dụng lệnh help):

LệnhMô tảLệnh tắt
helpHiển thị danh sách các lệnh Tinker.?
docĐọc tài liệu về một đối tượng, lớp, hằng số, phương thức hoặc thuộc tính.rtfm, man
lsLiệt kê các biến, phương thức và hằng số cục bộ, thể hiện hoặc lớp.list, dir
showHiển thị mã cho một đối tượng, lớp, hằng, phương thức hoặc thuộc tính.
wtfHiển thị dấu vết ngược của ngoại lệ gần đây nhất.last-exception, wtf?
whereamiHiển thị bạn đang ở đâu trong mã.
traceHiển thị ngăn xếp cuộc gọi hiện tại.
throw-upNém một ngoại lệ ra khỏi Psy Shell.
bufferHiển thị (hoặc xóa) nội dung của bộ đệm đầu vào mã.buf
clearXóa màn hình Psy Shell.
historyHiển thị lịch sử Psy Shell.hist
exitKết thúc phiên hiện tại và quay lại người gọi.quit, q
clear-compiledXóa tệp lớp đã biên dịch.
downĐưa ứng dụng vào chế độ bảo trì.
envHiển thị môi trường khung hiện tại.
optimizeTối ưu hóa khung để có hiệu suất tốt hơn.
upĐưa ứng dụng ra khỏi chế độ bảo trì.
migrateChạy di chuyển cơ sở dữ liệu.
schedule:list Liệt kê các công việc trong lịch trình. 
schedule:runChạy các công việc trong lịch trình.

Sử dụng Laravel Tinker ngay trên trình duyệt

Nếu như các bạn đã thường xuyên sử dụng Tinker trên terminal, chắc hẳn bạn đã ít nhất một lần cảm thấy khó chịu khi cần copy/paste một đoạn code dài (giống như việc viết function trong Tinker). Vậy thì laravel-web-tinker chính là thứ bạn cần để loại bỏ sự khó chịu đó.

Tương tự như mọi package khác thì bạn có thể cài đặt chỉ với một vài câu lệnh:

composer require spatie/laravel-web-tinker –dev

php artisan web-tinker:install

php artisan vendor:publish –provider=”Spatie\WebTinker\WebTinkerServiceProvider” –tag=”config”

Thay đổi config trong file:

Và giờ là lúc truy cập vào địa chỉ localhost:8000/tinker và trải nghiệm:

Tổng kết

Trong bài viết này đã giới thiệu căn bản cho các bạn về cách “chơi” Tinker trên terminal cũng như là giao diện web. Rất mong bài viết đã mang lại những thông tin hữu ích cho bạn đọc, và từ đó giúp ích cho các bạn trên con đường “master” Laravel nhé.

Tham khảo: Laravel Doc

Laravel web Tinker

 Hồ Nguyễn Văn Nhật
PHP Developer

ỨNG TUYỂN







    Chế độ phúc lợi

    CHÍNH SÁCH LƯƠNG & THƯỞNG

    Thấu hiểu tâm tư nguyện vọng của nhân viên, công ty Rivercrane Việt Nam đặc biệt thiết lập chế độ xét tăng lương định kỳ 2lần/năm. Xét đánh giá vào tháng 06 và tháng 12 hàng năm và thay đổi lương vào tháng 01 và tháng 07 hàng năm. Ngoài ra, nhân viên còn được thưởng thành tích định kỳ cho các cá nhân xuất sắc trong tháng, năm.

    CHẾ ĐỘ ĐÀO TẠO TẠI NHẬT

    Luôn luôn mong muốn các kỹ sư và nhân viên trong công ty có cái nhìn toàn diện về lập trình những mảng kỹ thuật trên thế giới, công ty Rivercrane Việt Nam quyết định chế độ 3 tháng 1 lần đưa nhân viên đi học tập tại Nhật. Các bạn kỹ sư hoàn toàn đều có thể quyết định khả năng phát triển bản thân theo hướng kỹ thuật hoặc theo hướng quản lý.

    CHẾ ĐỘ ĐI DU LỊCH HÀNG NĂM

    Không chỉ đưa đến cho nhân viên những công việc thử thách thể hiện bản thân, công ty Rivercrane Việt Nam muốn nhân viên luôn thích thú khi đến với những chuyến hành trình thú vị hàng năm. Những buổi tiệc Gala Dinner sôi động cùng với những trò chơi Team Building vui nhộn sẽ giúp cho đại gia đình Rivercrane thân thiết hơn.

    CHẾ ĐỘ EVENT CÔNG TY

    Những hoạt động Team building, Company Building, Family Building, Summer Holiday, Mid-Autumn Festival… sẽ là những khoảnh khắc gắn kết đáng nhớ của mỗi một nhân viên trong từng dự án, hoặc sẽ là những điều tự hào khi giới thiệu công ty mình với với gia đình thân thương, cùng nhau chia sẻ yêu thương với thông điệp “We are One”

    BẢO HIỂM

    Công ty Rivercrane Việt Nam đảm bảo tham gia đầy đủ chế độ Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp. Cam kết chặt chẽ về mọi thủ tục phát sinh công ty đều hỗ trợ và tiến hành cho nhân viên từ đầu đến cuối. Những chế độ bảo hiểm khác công ty cũng đặc biệt quan tâm và từng bước tiến hành.

    CHẾ ĐỘ PHÚC LỢI KHÁC

    Hỗ trợ kinh phí cho các hoạt động văn hóa, văn nghệ, thể thao; Hỗ trợ kinh phí cho việc mua sách nghiên cứu kỹ thuật; Hỗ trợ kinh phí thi cử bằng cấp kỹ sư, bằng cấp dành cho ngôn ngữ. Hỗ trợ kinh phí tham gia các lớp học về quản lý kỹ thuật bên ngoài; Các hỗ trợ phúc lợi khác theo quy định công ty…

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close