Laravel Tip : Accessor and Scope

Cách chúng ta có thể dùng trong Laravel. Một cách linh hoạt và maintain hơn, đó là dùng Accessor Scope 

Example : Product cần lấy các giá trị "available" , theo cách thông thường ta hay dùng với câu lệnh dưới đây

App\Models\Product::where('status', 'available')->get();

Nhưng bạn thấy trong nó có cái gì đó làm ta cảm thấy không dễ để tuỳ biến và chỉnh sửa cho linh hoạt được. Vậy bạn thử hình cách mà ta dùng với Accessor và Scope như sau

App\Models\Product.php  trong model này. Ta cài đặt truy vấn eloquent các cột mà ta muốn, tuỳ ý thao tác , viết các biểu thức tính toán,...

 public function scopeAvailable($query)
    {
        return $query->where('status', 'available');
    }

    /**
     * Get the formatted price for the product.
     *
     * @return string
     */
    public function getFormattedPriceAttribute()
    {
        return number_format($this->price, 2) . ' USD';
    }

Chú ý : scopeAvailable , để gọi được function đó, bạn chỉ cần $product->available() , $product->formatted_price

Ví dụ: ta sẽ viết lấy giá trị ra như sau, tuỳ bạn muốn viết câu lệnh ở bất cứ đâu, ở đây tôi chỉ viết trong web.php để dê g

Route::get("api/products/check",function(){

    $product = App\Models\Product::available()->get();

    $product->map(function($item){

        $item->price = $item->formatted_price;
    });

    return response()->json($product);

});

Dữ liệu trả về như sau : 

 

Bài Viết Liên Quan

x

Xin chào! Hãy ủng hộ chúng tôi bằng cách nhấp vào quảng cáo trên trang web. Việc này giúp chúng tôi có kinh phí để duy trì và phát triển website ngày một tốt hơn. (Hello! Please support us by clicking on the ads on this site. Your clicks provide us with the funds needed to maintain and improve the website continuously.)

Ngoài ra, hãy đăng ký kênh YouTube của chúng tôi để không bỏ lỡ những nội dung hữu ích! (Also, subscribe to our YouTube channel to stay updated with valuable content!)

Đăng Ký