2015-04-07 21 views
6

Trong CakePHP 3, tôi đã có một mô hình gọi là Bài viết và một lĩnh vực được gọi là 'chủ đề', và tôi chạy vào một rào cản cố gắng lấy danh sách 100 chủ đề bài viết thường được sử dụng nhất.Làm thế nào để bạn sử dụng COUNT (*) với tìm ('danh sách') trong CakePHP 3?

dẫn SQL Các mã sau đây của chọn tất cả của các trường có thể và khôngCOUNT(*):

$articles->find('list', [ 
    'keyField' => 'subject', 
    'valueField' => 'COUNT(*)' 
]) 
->group('subject') 
->order(['COUNT(*)' => 'DESC']) 
->limit(100) 
->toArray(); 

Sau đó, tôi nhớ "CakePHP’s ORM offers abstraction for some commonly used SQL functions.". Nhưng đoạn mã sau dẫn đến "Lỗi: Tên hàm phải là một chuỗi":

$countFunc = $this->find()->func()->count('*'); 
$articles->find('list', [ 
    'keyField' => 'subject', 
    'valueField' => $countFunc 
]) 
->group('subject') 
->order([$countFunc => 'DESC']) 
->limit(100) 
->toArray(); 

Trả lời

11

May mắn thay, José tipped tôi ra để lừa này, mà làm việc như một nét duyên dáng:

$articles->find('list', [ 
    'keyField' => 'subject', 
    'valueField' => 'count' 
]) 
->select([ 
    'subject', 
    'count' => $this->find()->func()->count('*') 
]) 
->group('subject') 
->order(['count' => 'DESC']) 
->limit(100) 
->toArray(); 
+1

$ this-> Zendesks-> find ('list', ['keyField' => 'company_id', 'valueField' => 'comment_id']) -> trong đó (['created_at> =' => $ month3Start, 'created_at <=' => $ month1End]) -> chọn (['company_id', 'comment_id' => $ this-> Zendesks-> find() -> func() -> count ('*')]) -> nhóm ('company_id '); Chỉ cần sao chép tác phẩm của tôi ở đây, có thể giúp người khác biết thêm chi tiết. và cảm ơn mã của bạn! –

-1
$query = $articles->find(); 
    $query->select(['count' => $query->func()->count('*')]); 
    $StaticPages = $query->toArray(); 
    $StaticPagesCount = $StaticPages[0]->count; 
+0

Điều này không sử dụng 'find ('list')' hoặc tạo số lượng nhóm. –

Các vấn đề liên quan