CakePHP の コントローラに postConditions というちょっとだけ便利なメソッドがありました。

cake/libs/controllers.php

function postConditions($data) {
    if (!is_array($data) || empty($data)) {
        return null;
    }
    $conditions = array();

    foreach($data as $model => $fields) {
        foreach($fields as $field => $value) {
            $conditions[$model . '.' . $field] = $value;
        }
    }
    return $conditions;
}

例えば検索をするフォームなどで User.name で検索するような場合

view で
input('User/name');
と指定すると$this->data は

Array
(
    [User] => Array
        (
            [name] => 山田
        )
)

この $this->data を postConditions に渡すと
$data = $this->postConditions($this->data);
$data は

Array
(
    [User.name] => 山田
)

となり、このまま find や findAll に渡すことができます。
$this->User->find($data);

参考:CakePHP マニュアル
7.2. コントローラの関数

関連する投稿