- vừa được xem lúc

Hướng dẫn "chơi" Tinker nhưng không phải trong DotA

0 0 10

Người đăng: Vương Minh Thái

Theo Viblo Asia

Lời mở đầu

  • Xin chào tất cả các bạn, tôi đã quay trở lại rồi đây. Xin lỗi các bạn vì quả giật title câu view nhưng mà đã lâu rồi tôi mới quay trở lại con đường viết lách nên phải tạo điểm nhấn một tí, biết đâu gỡ gạc được tí view an ủi.
  • Thôi không dài dòng nữa, chúng ta hãy cùng đến với nhân vật chính của bài viết hôm nay TINKER.

Nội dung

Tinker là gì?

  • Theo như định nghĩa trên trang chủ Laravel thì
 Laravel Tinker is a powerful REPL for the Laravel framework, powered by the PsySH package.
  • Đại loại tinker là công cụ chạy trên ternimal giúp chúng ta thao tác với database (còn nếu bạn hứng thú với việc tìm hiểu về REPL- Read Eval Print Loop thì có thể tìm hiểu ở đây)

Sử dụng tinker như thế nào?

  • Để sử dụng được tinker, bạn cần gõ command sau trên terminal:

    php artisan tinker #hoặc
    php artisan ti
    

1. Query database:

  • Query theo điều kiện

    App\Models\User::all(); //query all user App\Models\User::where('gender', 'male')->first(); //find user by condition // find relationship
    $user = App\Models\User::with('comments')->first();
    $comments = $user->comments;
    

  • Tạo thêm record:

    $user = new App\Models\User;
    $user->name = "ThaiVm";
    $user->gender = "Male";
    $user->save(); App\Models\User::all();
    

  • Xoá bản ghi:

    $user = App\Models\User::where('name', 'Thai')->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 với ...

    > function sayHello($userId) { \
    . $user = App\Models\User::find($userId); \
    . return "Hello {$user->name}";}
    => null
    > sayHello(7)
    => "Hello ThaiVm"
    

3. Up/down chế độ bảo trì

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

show <functionName>

5. Nếu các bạn còn biết chức năng nào nữa, hãy cùng chia sẻ trong phần comment nhé

Chạy 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:

    <?php return [ /* * The web tinker page will be available on this path. */ 'path' => '/tinker-edit-path', //tuỳ chỉnh đường dẫn /* * Possible values are 'auto', 'light' and 'dark'. */ 'theme' => 'dark', //tuỳ chỉnh theme sáng tối /* * By default this package will only run in local development. * Do not change this, unless you know what you are doing. * mặc định chỉ chạy ở môi trường local, nếu đổi sang môi trường khác, vui lòng đọc kỹ tại repo github) */ 'enabled' => env('APP_ENV') === 'local', /* * This class can modify the output returned by Tinker. You can replace this with * any class that implements \Spatie\WebTinker\OutputModifiers\OutputModifier. */ 'output_modifier' => \Spatie\WebTinker\OutputModifiers\PrefixDateTime::class, /* * These middleware will be assigned to every WebTinker route, giving you the chance * to add your own middlewares to this list or change any of the existing middleware. */ 'middleware' => [ Illuminate\Cookie\Middleware\EncryptCookies::class, Illuminate\Session\Middleware\StartSession::class, Spatie\WebTinker\Http\Middleware\Authorize::class, ], /* * If you want to fine-tune PsySH configuration specify * configuration file name, relative to the root of your * application directory. */ 'config_file' => env('PSYSH_CONFIG', null),
    ];
    
  • Và giờ là lúc truy cập vào địa chỉ localhost:8000/path-trong-file-config và trải nghiệm:

Tổng kết

  • Trong bài viết này mình đã "hướng dẫn" sơ qua 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 "try hard" và "go pro" Laravel nhé.
  • Hy vọng sẽ sớm được gặp lại các bạn trong các bài viết sau (nếu tôi bớt lười hơn).

Tài liệu tham khảo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 334

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 417

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1k

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 139

- vừa được xem lúc

Một số tips khi dùng laravel (Part 1)

1. Show database query in raw SQL format. DB::enableQueryLog(); // Bật tính năng query logging. DB::table('users')->get(); // Chạy truy vấn bạn muốn ghi log.

0 0 68

- vừa được xem lúc

Inertiajs - Xây dựng Single Page App không cần API

Tiêu đề là mình lấy từ trang chủ của https://inertiajs.com/ chứ không phải mình tự nghĩ ra đâu nhé :v. Lâu lâu rồi chưa động tới Laravel (dự án cuối cùng mình code là ở ver 5.8), thế nên một ngày đẹp trời lượn vào đọc docs ver 8.

0 0 227