やりたいこと
・Socialsテーブル
・Gazousテーブル
の2つをcontain。
Gazousテーブルに画像があればそれをアイコンとする。
なければSocialsテーブルの画像をアイコンとする。
両方なければdefaultのアイコン。
実装について
・UsersTableで findUserIcon Finder を使う
・Socials Gazous をそれぞれ contain。
・formatResults で加工して返す
つまづいた点
formatResults の返り値が
Cake\Datasource\ResultSetDecorator Object ( [count] => 3 )
となってしまう。
以下コード
UsersTable.php
public function findUserIcon(Query $query, array $options){ return $this->find() ->contain( [ 'Socials' => function ($q) { return $q; } ] ) ->contain( [ 'Gazous' => function ($q) { return $q ->order("id desc"); } ] ) ->formatResults(function($results) { return $results->map(function($row) { $img = '/okws/img/50x50-dummy.png'; if(!empty($row->socials[0]['img'])){ $img = $row->socials[0]['img']; } if(!empty($row->gazous[0]['name'])){ $img = '/uploads/50x50/'.$row->gazous[0]['name']; } return $row; }); return $results; }); }
UsersController.php
$this->Users = TableRegistry::get('Users'); $data = $this->Users->find('UserIcon') ->limit(3) ->order('id desc') ->all(); pr($data); exit;
どうすれば count ... ではなく、加工結果を返せますか?
宜しくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。