データベースから大量の Order レコードをフェッチしていますが、フェッチされたレコードに関連テーブル (customers) の列である別のフィールドを追加したいと考えていました。
ただし、このフィールドは Orders モデルの一部ではないため、直接取得されません。
したがって、この追加の属性を保持するためにモデルに属性を追加し、次のように選択しました。
$criteria = new CDbCriteria();
$criteria->join = 'INNER JOIN customers c ON t.idCustomer = c.idCustomer';
$criteria->select = 't.* , c.CustomerName AS CustomerName'; // CustomerName is the added attribute
$data = Orders::model()->findAll($criteria);
var_dump($data); // in here CustomerName is fetched,
$data = CJSON::encode($data); // but not here, its not even part of encoded string!
すぐにエンコードする必要があり、自分のモデルに afterFind() を入れたくありません (ただし、エンコードされるとは思いません)。
わからない部分はありますか?どうすればこれを達成できますか?