Tech Racho エンジニアの「?」を「!」に。

CakePHP afterFind()で注意

CakePHPで、DBから取得した値を加工したり、Associationだけでは解決できない別データを付加したい時など、afterFind()が便利です。

しかし、findではcountなどをすることもあるので、うっかりするとFatal Errorが出てしまうことがあります。

Cannot use string offset as an array in ~.php

データの形式をきちんと確認しましょう。

public function afterFind($results) {
    foreach ($results as $key => $val) {
        //↓ここのis_array()が重要
        //$this->User->find('count')などをやった場合、2などの数値が入るため
        if (isset($results[$key]['User']) && is_array($results[$key]['User'])) {
            $results[$key]['User']['name'] = $results[$key]['User']['familyname'] . $results[$key]['User']['firstname'];
        }
    }
}

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。