4

データベースから大量の 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() を入れたくありません (ただし、エンコードされるとは思いません)。

わからない部分はありますか?どうすればこれを達成できますか?

4

2 に答える 2