Tìm kiếm bài viết

10 tính năng ẩn trong Laravel Eloquent chắc chắn bạn chưa biết

09.11.2020

5.0/5 (1 Reviews)

10 tính năng ẩn trong Laravel Eloquent chắc chắn bạn chưa biết. Hãy cùng tìm hiểu xem đó là những Function gì nhé.

    Laravel là một framework rất giàu tính năng. Tuy nhiên, bạn không thể tìm thấy tất cả các tính năng có sẵn trong tài liệu chính thức. Dưới đây là một số tính năng mà bạn có thể không biết.

    Laravel

    Get original attributes

    Sau khi thay đổi bản ghi Eloquent, bạn có thể lấy được các attribute gốc ban đầu bằng cách gọi getOriginal()

    $user = App\User::first();
    $user->name;                   //John
    $user->name = "Peter";         //Peter
    $user->getOriginal('name');    //John
    $user->getOriginal();          //Original $user record
    

    Kiểm tra xem Model có thay đổi không

    Xác định xem Model hoặc Attribute được sửa đổi bằng cách sử dụng isDirty()

    $user = App\User::first();
    $user->isDirty();          //false
    $user->name = "Peter";
    $user->isDirty();          //true
    

    Bạn cũng có thể kiểm tra nếu một vài attribute cụ thể được thay đổi.

    $user->isDirty('name');    //true
    $user->isDirty('age');     //false
    

    Lấy giá trị các attribute đã được thay đổi

    Truy xuất các attribute đã thay đổi của Model bằng cách sử dụng getChanges()

    $user->getChanges()
    //[
         "name" => "Peter",
      ]
    

    Lưu ý: Thay đổi sẽ chỉ phản ánh nếu bạn lưu Model hoặc đồng bộ hóa các thay đổi bằng cách sử dụng syncChanges()

    Tùy chỉnh column deleted_at

    Theo mặc định, Laravel xử lý xóa mềm bằng column deleted_at. Bạn có thể thay đổi điều này bằng cách define rõ ràng property DELETED_AT.

    class User extends Model
    {
        use SoftDeletes;
    
         * The name of the "deleted at" column.
         *
         * @var string
         */
        const DELETED_AT = 'is_deleted';
    }
    

    Hoặc bằng cách define một accessor.

    class User extends Model
    {
        use SoftDeletes;
    
        public function getDeletedAtColumn()
        {
            return 'is_deleted';
        }
    }
    

    Lưu Model và relationship

    Bạn có thể lưu một Model và relationship tương ứng của nó bằng function push().

    class User extends Model
    {
        public function phone()
        {
            return $this->hasOne('App\Phone');
        }
    }
    $user = User::first();
    $user->name = "Peter";
    $user->phone->number = '1234567890';
    $user->push(); // This will update both user and phone record in DB
    

    Reload fresh Model

    Reload fresh Model từ cơ sở dữ liệu bằng cách sử dụng fresh()

    $user = App\User::first();
    $user->name;               // John
    // user record get updated by another thread. eg: 'name' changed to // Peter.
    $updatedUser = $user->fresh(); 
    $updatedUser->name;       // Peter
    $user->name;              // John
    

    Reload existing model

    Bạn có thể reload existing model với các giá trị mới từ cơ sở dữ liệu bằng cách sử dụng refresh()

    $user = App\User::first();
    $user->name;               // John
    // user record get updated by another thread. eg: 'name' changed to // Peter.
    $user->refresh(); 
    $user->name;              // Peter
    

    Kiểm tra xem các Model có giống nhau không

    Xác định xem hai Model có cùng ID và thuộc cùng một bảng bằng cách sử dụng is()

    $user = App\User::find(1);
    $sameUser = App\User::find(1);
    $diffUser = App\User::find(2);
    $user->is($sameUser);       // true
    $user->is($diffUser);       // false
    

    Clone Model

    Bạn có thể clone một model bằng cách sử dụng replicate(). Nó sẽ tạo một bản sao của model thành một instance mới và chưa tồn tại.

    $user = App\User::find(1);
    $newUser = $user->replicate();
    $newUser->save();
    

    Chỉ định các thuộc tính trong phương thức find()

    Khi sử dụng find() hoặc findOrFail(), bạn có thể chỉ định các thuộc tính để chọn làm đối số thứ hai.

    $user = App\User::find(1, ['name', 'age']);
    $user = App\User::findOrFail(1, ['name', 'age']);
    
    CÓ THỂ BẠN QUAN TÂM

    Bài Viết Cùng Chuyên Mục

    XEM THÊM
    thumbnail

    Kubernetes bài 6 - Vận hành k8s Day-Two Operations và Quản trị bằng GitOps

    22.05.2026

    Khi cụm Kubernetes của bạn đã được bảo mật cấu hình, tối ưu tài nguyên và thiết lập tự phục hồi, câu hỏi đặt ra là làm sao để duy trì sự ổn định đó trong nhiều năm tiếp theo mà không bị phụ thuộc

    thumbnail

    Kubernetes bài 5 - bảo mật Cloud Native và chuẩn DevSecOps cho K8s

    22.05.2026

    Việc siết chặt an ninh (Hardening) không phải là cấu hình một vài thông số rồi bỏ đó, mà là một tư duy phòng thủ chiều sâu.

    thumbnail

    Kubernetes bài 4 - Tối ưu Resource Auto-Healing và Scale Zero-Downtime

    22.05.2026

    Bài viết này sẽ đi sâu vào các cơ chế ở tầng Kernel giúp hệ thống tự phục hồi, chống lại các đợt tấn công cạn kiệt tài nguyên và cập nhật phiên bản mới mà người dùng không hề hay biết.

    thumbnail

    Kubernetes bài 3 - Bảo mật cấu hình k8s và config Security trên Production

    22.05.2026

    Kubernetes giải quyết bài toán này bằng hai đối tượng chuyên biệt nhưng nếu không hiểu rõ bản chất bảo mật ở tầng dưới, bạn đang tự tay dâng toàn bộ chìa khóa hệ thống cho hacker.

    thumbnail

    Kubernetes bài 2 - Mạng lưới k8s và luồng Traffic ở Packet Level

    22.05.2026

    Pod không chỉ là một container: Rất nhiều người nhầm lẫn Pod 1-1 với Container. Thực chất, Pod là đơn vị triển khai nhỏ nhất, có thể chứa một hoặc nhiều container

    Mục lục bài viết