2007年

CakePHP find や findAll の条件指定にちょっとだけ便利な postConditions このエントリーを含むはてなブックマーク

CakePHP Add comments

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. コントローラの関数

関連する投稿

Leave a Reply

Additional comments powered by BackType

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン