Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tạo một cột ảo phức hợp trong Mô hình Eloquent?

Giải pháp 1:Sử dụng phạm vi toàn cục để thêm trường vào các câu lệnh đã chọn của bạn

Một vấn đề với các cột ảo là Eloquent sẽ cố gắng cập nhật chúng nếu bạn không ngăn được. Bạn có thể loại trừ nó khỏi mảng $ fillable và sử dụng phạm vi toàn cầu trong mô hình của bạn để thêm cột ảo, giống như:

protected static function boot()
{
    parent::boot();

    static::addGlobalScope('next_action', function (Builder $builder) {
        $builder->addSelect(DB::raw('DATE_ADD(updated_at, INTERVAL days DAY) AS next_action'));
    });
}

Bạn sẽ phải nhớ rằng điều này sẽ ghép nối Mô hình của bạn với MySQL vì các hàm ngày bạn đang sử dụng sẽ không hoạt động trong cơ sở dữ liệu như sqlite.

Giải pháp 2:Sử dụng chế độ xem MySQL

Thông thường những gì tôi làm khi có nhiều trường được tính toán là tạo một dạng xem MySQL. Tạo chế độ xem với tất cả các trường được tính toán mà bạn muốn, sau đó bạn có thể tạo mô hình Eloquent mới cho chế độ xem đó mà không phải lo lắng về phạm vi truy vấn.

Một lưu ý là bạn tất nhiên không thể sử dụng tạo / cập nhật / xóa trên mô hình này, nhưng nếu bạn chỉ sử dụng mô hình cho mục đích hiển thị, đó không phải là vấn đề.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. truy vấn sql để tìm nạp các bản ghi của 30 ngày tới

  2. Php PDO có thể tìm nạp hai bộ kết quả không? Và Nếu có, thì 1 bộ kết quả tốt hơn hoặc nhiều hơn 1 là bao nhiêu?

  3. Tại sao ứng dụng .NET web API của tôi không kết nối với MySQL trên docker khi sử dụng docker-compile?

  4. Làm cách nào để thêm khóa ngoại khi tạo bảng mới?

  5. Tìm hiểu xem một varchar có chứa dấu phần trăm trong MySQL hay không