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 và 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 :