0

結果を単純な配列として取得するCakePhpRead関数

$result = $this->Model->read('id, name, title', $id);

結果は次のようになります

Array
(
    [Model] => Array
    (
        [id] => 1
        [name] => test
        [title] => New Head title
    )

)

以下のように、クエリから直接結果配列を取得する方法はありますか

Array
    (
        [id] => 1
        [name] => test
        [title] => New Head title
    )

変数の一時ストレージを使用せずに。

4

3 に答える 3

2

次のように、 Set::extract呼び出しを介して結果を実行するだけです。

$result = $this->Model->read('id, name, title', $id);
$result = Set::extract('/Model', $result);

セットは非常に強力なクラスです。ぜひお読みください。:) 乾杯。

于 2012-05-22T07:21:15.347 に答える
0

CakePHPの純度はさておき(他のポスターにも同意します)

find('list')はあなたが探しているものですか?

$result = $this->Model->find('list', array('fields' => array('id', 'name', 'title'),        'conditions' => array('id' => $id), 'recursive' => 0    ));
于 2012-05-21T09:50:07.333 に答える
0

Cakeコアをハックする場合を除いて、Cakeは常に追加のモデルキーを使用して結果を内部的に返します。したがって、「速度の最適化」の観点からこれを意味する場合、 「変数の一時ストレージを使用せずに」はほとんど不可能です(引用符で囲んで、ほとんど違いがないため)。

あなたはそれを簡単に動作させることができます:

$result = current($this->Model->read('id, name, title', $id));

モデルのreadメソッドをオーバーライドして、常に内部でこれを実行することができます(お勧めしません。いつか噛み付くようになります)。AppModelでそうすることで、この動作をグローバルに行うことができます。

于 2012-05-21T10:13:06.613 に答える