Giả sử tôi có bảng A với bản ghi hoạt động của nó trong yii2, Cách tốt nhất để có thể tải bản ghi với ngày tạo tối đa cho mô hình là gì.Yii2 chọn theo ngày tối đa?
Đây là truy vấn:
select *
from A
where created_date = (
select max(created_date) from A
)
Bây giờ tôi nhận được ngày max đầu tiên sau đó sử dụng nó trong việc tiếp cận khác để cơ sở dữ liệu ví dụ:
$max = A::find()->select("created_date)")->max();
$model = A::find()->where("created_date = :date",[":date"=>$max])->one();
Tôi chắc chắn rằng điều này có thể được thực hiện với một truy cập vào cơ sở dữ liệu, nhưng tôi không biết làm thế nào.
vui lòng trợ giúp.
Nên Tôi sử dụng ...-> giới hạn (1) cũng? Thật kỳ lạ nhưng với giới hạn nó hoạt động nhanh hơn cho tôi. Tôi có 2 triệu hàng trong DB – Footniko
@Footniko Theo tài liệu chính thức: Không có yii \ db \ ActiveRecord :: findOne() và yii \ db \ ActiveQuery :: một() sẽ thêm LIMIT 1 vào câu lệnh SQL đã tạo. Nếu truy vấn của bạn có thể trả về nhiều hàng dữ liệu, bạn nên gọi giới hạn (1) một cách rõ ràng để cải thiện hiệu suất, ví dụ: Khách hàng :: tìm() -> giới hạn (1) -> một(). http://www.yiiframework.com/doc-2.0/guide-db-active-record.html – nicolascolman