2011-06-28 23 views
1

簡単にするために、私は2つのテーブルを持っています:プロジェクトとタスク。プロジェクトは多くのタスクを持つことができ、タスクはプロジェクトに属します。 私はデータベースをセットアップし、関連付けを作成し、モデル、コントローラ、ビューを生成するためにケーキのベークを使用して、すべてが完璧です。 プロジェクトのインデックスビューを見ると、期待どおりにすべてのプロジェクトを一覧表示したテーブルが表示されます。私がしたいことは本当にシンプルです。そのテーブルには、そのプロジェクトに割り当てられているすべてのタスクの数を示す列が必要です。モデルへのカスタムクエリの追加

このため、SQLクエリは、(プロジェクト名とタスクの数のリストを返す)簡単です:

SELECT projects.name, 
(SELECT COUNT(*) FROM tasks WHERE project_id = projects.id) as taskCount 
FROM projects 

それでは、どのように私は、CakePHPでこれを達成していますか?プロジェクトのコントローラで インデックスメソッドは、現時点では次のようになります。

function index() { 
    $this->Project->recursive = 0; 
    $this->set('projects', $this->paginate()); 
} 

答えて

1

あなたはvirtualFieldsまたはcounterCacheを使用することができますが、それは別の方法です。

+0

プロジェクトモデルに を追加しました。var $ virtualFields = array( 'taskcount' => 'Project_id = Project.id'のタスクからCOUNT(*)を選択します。 とすべてが良いです! – Ben

関連する問題