rawValue() Method trong Laravel 9.37+
3535

Từ Laravel 9.37, một phương thức mới rawValue() đã được thêm vào trong Eloquent Attributes để lấy giá trị gốc của thuộc tính mà không qua Accessor.


🚀 Tại sao cần rawValue()?

Thông thường, nếu một thuộc tính có Accessor, khi truy cập $model->attribute, giá trị trả về sẽ là kết quả của Accessor. Nhưng đôi khi, bạn cần lấy giá trị gốc từ database, bỏ qua Accessor.

📌 rawValue() giúp lấy giá trị gốc của thuộc tính mà không bị ảnh hưởng bởi Accessor.


📌 Ví dụ 1: Khi Accessor làm thay đổi giá trị

🔹 Không dùng rawValue()

class User extends Model
{
    protected function name(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => strtoupper($value) // Luôn trả về chữ in hoa
        );
    }
}

$user = User::first();
echo $user->name; // "JOHN DOE"

👉 Truy cập $user->name sẽ luôn trả về chữ in hoa vì Accessor đã sửa đổi nó.


🔹 Dùng rawValue() để lấy giá trị gốc

echo $user->rawValue('name'); // "John Doe"

👉 Lấy dữ liệu gốc từ database mà không bị Accessor can thiệp.


📌 Ví dụ 2: Khi dùng rawValue() với dữ liệu JSON

Nếu bạn có một cột kiểu JSON trong database, Accessor có thể xử lý dữ liệu này khi lấy ra. Nhưng nếu bạn chỉ muốn lấy dữ liệu thô, dùng rawValue().

class Product extends Model
{
    protected function details(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => json_decode($value, true) // Convert JSON thành mảng
        );
    }
}

$product = Product::first();
print_r($product->details); 
// Kết quả: ['color' => 'red', 'size' => 'M']

print_r($product->rawValue('details'));
// Kết quả: '{"color": "red", "size": "M"}' (chuỗi JSON gốc)

 


📌 Khi nào nên dùng rawValue()?

Trường hợp Có cần rawValue() không?
Có Accessor làm thay đổi dữ liệu ✅ Nên dùng
Muốn lấy giá trị gốc từ database ✅ Nên dùng
Dữ liệu không có Accessor ❌ Không cần
Chỉ muốn hiển thị giá trị thông thường ❌ Không cần

🎯 Kết luận

  • rawValue() giúp lấy dữ liệu gốc từ database mà không bị Accessor thay đổi.
  • Hữu ích khi làm việc với JSON hoặc các Accessor tùy chỉnh.
  • Từ Laravel 9.37+, bạn có thể dùng rawValue() trực tiếp trên model. 🚀

Danh mục


  1. Khác
  2. ThreeJS
  3. Ubuntu/Linux
  4. HTML/CSS
  5. Git
  6. Amazon Web Services
  7. Javascript
  8. Docker
  9. Laravel

Bài viết liên quan


Hiển thị giá trị trong Blade

Hiển thị giá trị trong Blade

01.08.2024
Author: ADMIN
Hướng dẫn hiển thị biến trong Laravel Blade: escape HTML tự động, hiển thị dữ liệu thô, giá trị mặc định và cách truy xuất mảng, đối tượng. Giúp bạn tối ưu hiển thị dữ liệu một cách an toàn!
Cấu Trúc Điều Kiện và Vòng Lặp Trong Blade

Cấu Trúc Điều Kiện và Vòng Lặp Trong Blade

01.08.2024
Author: ADMIN
Khám phá các cấu trúc điều kiện và vòng lặp trong Laravel Blade. Tận dụng @if, @foreach, @forelse để hiển thị dữ liệu linh hoạt, giúp mã nguồn dễ đọc, sạch sẽ và tối ưu hơn!
Layout: @include, @extends, @section, @yield

Layout: @include, @extends, @section, @yield

01.08.2024
Author: ADMIN
Hướng dẫn chi tiết về @include, @extends, @section và @yield trong Laravel Blade. Tối ưu hóa tái sử dụng giao diện, tổ chức mã rõ ràng, giúp phát triển và bảo trì ứng dụng dễ dàng hơn!
Blade Components

Blade Components

01.08.2024
Author: ADMIN
Laravel Blade Components giúp bạn tạo giao diện tái sử dụng, truyền dữ liệu linh hoạt và sử dụng slots thông minh. Hướng dẫn chi tiết giúp mã nguồn sạch hơn, dễ bảo trì và phát triển nhanh chóng!

Bài viết khác

Routing

Routing

01.08.2024
Author: ADMIN
Hướng dẫn chi tiết về Basic Routing trong Laravel, từ cách định nghĩa route, sử dụng middleware, route caching đến route naming giúp tối ưu hóa ứng dụng.
Blade Basics

Blade Basics

01.08.2024
Author: ADMIN
Khám phá Blade trong Laravel: từ if-else, loops, kế thừa layout đến include sub-views. Giúp code gọn gàng, dễ quản lý và bảo trì hơn!
9 Mẹo Hữu Ích Khi Sử Dụng Blade Trong Laravel

9 Mẹo Hữu Ích Khi Sử Dụng Blade Trong Laravel

01.08.2024
Author: ADMIN
Khám phá 9 mẹo Blade giúp bạn viết code Laravel sạch, tối ưu và chuyên nghiệp hơn. Từ @forelse, @auth, @guest, đến format ngày, tối ưu SEO – tất cả trong một bài viết súc tích, dễ áp dụng!
Hiển thị giá trị trong Blade

Hiển thị giá trị trong Blade

01.08.2024
Author: ADMIN
Hướng dẫn hiển thị biến trong Laravel Blade: escape HTML tự động, hiển thị dữ liệu thô, giá trị mặc định và cách truy xuất mảng, đối tượng. Giúp bạn tối ưu hiển thị dữ liệu một cách an toàn!