Tôi có ứng dụng CakePHP 1.3 và thực sự thích Containable behavior để tìm nạp dữ liệu.Mô hình CakePHP: COUNT (*) trong Có thể chứa
Giả sử tôi có bài đăng trong mối quan hệ một-nhiều với nhận xét. Tôi sử dụng Có thể chứa để truy vấn (để phân trang) một danh sách tất cả các Bài đăng và các Nhận xét thuộc về. Nhưng tôi chỉ quan tâm đến số lượng nhận xét mà mỗi bài đăng có. Tôi đã không tìm thấy bất kỳ cách nào để đạt được truy vấn này có thể chứa được mà không cần tìm nạp tất cả các dòng Nhận xét. Tôi đã thử:
$this->paginate=array(
'fields' => 'Post.title, Post.created',
'contain' => array('Comment'=>'COUNT(*) AS count'),
);
kết quả trong 'Mô hình' Nhận xét "không được liên kết với thông báo lỗi" Tính ".
$this->paginate=array(
'fields' => array('Post.title, Post.created'),
'contain' => array('Comment'=>array('fields'=>'COUNT(*) AS count'),
);
không hoạt động, bộ kết quả chứa trường hợp cuối cùng chứa trường đếm, nhưng có số lượng tất cả các nhận xét không chỉ là số nhận xét.
đoán khác của tôi là
$this->paginate=array(
'fields' => 'Post.title, Post.created, COUNT(Comment.id)',
'contain' => array('Comment'=>array('fields'=>''),
);
nhưng kết quả này trong một lỗi, vì mối quan hệ hasMany được truy vấn một cách độc lập, vì vậy bảng trả lời không có trong truy vấn cho các mục bài viết. Làm cách nào tôi có thể đếm số Nhận xét mà Bài đăng có?
Đó là một ý tưởng hay, nhưng nó không giải quyết được vấn đề cho các truy vấn phức tạp hơn trong đó việc đếm số liên kết với một hàng sẽ không hoạt động (ví dụ như hệ thống báo cáo trong đó người dùng chọn). Không có cách nào khác để đếm được bằng cách sử dụng có thể chứa được không? – Zxaos