sql >> データベース >  >> RDS >> Mysql

ZFテーブルインターフェイスで結合クエリを実行するにはどうすればよいですか?

    $models = new Models();
    $select = $models->select(Zend_Db_Table::SELECT_WITH_FROM_PART);
    $select->setIntegrityCheck(false)
           ->join(array("a"=>"manufacturers"), 'models.manufacturer_id = a.id',
             array("man_name"=>"name", "man_description"=>"description"))
           ->where("a.name LIKE 'A%'");
    $rowset = $models->fetchAll($select);
    

    残念ながら、Zend_Db_Table リレーションシップインターフェイスには、宣言された参照マップからの結合クエリの作成に関連するインテリジェンスがあまりありません。複雑なクエリに対するコミュニティ提供のソリューションは、Zend_Db_Table_Selectです。 クエリファクトリ。

    メーカーの名前と説明の列エイリアスを指定する必要があることに注意してください。そうしないと、これらの列によって、行データの連想配列内のモデルの名前と説明が抑制されます。これを避けるために、列には明確に名前を付ける必要があります。

    ただし、あなたの場合は、テーブルインターフェイスと選択インターフェイスをスキップし、Dbアダプタを使用してSQLクエリを直接実行します。

    $data = $db->fetchAll("
      SELECT m.*, a.name AS man_name, a.description AS man_description
      FROM Models m JOIN Manufacturers a ON m.manufacturer_id = a.id
      WHERE a.name LIKE 'A%'");
    

    Zend_Db_Table_Rowsetとしてではなく、連想配列の単純な配列としてデータを取得します。 。ただし、結合された行セットはとにかく書き込み可能ではないため、それほど犠牲にすることはありません。




    1. ルームエラー:クエリによって返される列にフィールド名がありません

    2. MySQL:MySQLルートパスワードをリセットまたは変更するにはどうすればよいですか?

    3. PostgreSQLデータベースを監査する方法

    4. AWSRDSを使用したHerokuアプリでMysql2::Error(SSL接続エラー:ASN:不正な他の署名の確認)を取得する