1

あなたは多くを含む複雑なSQLクエリは素敵なCakePHPのスタイルのデータベースの結果を生み出すのZend Frameworkのものがある(例えば、多くのタグにそれらに関連する多くとの記事を返す)参加している場合:Zend_Db_Tableを使用してZend FrameworkでCakePHPスタイルのデータベースクエリを実行しますか?

Array 
(
    [0] => Array 
     (
      [ModelName] => Array 
       (
        [id] => 83 
        [field1] => value1 
        [field2] => value2 
        [field3] => value3 
       ) 

      [AssociatedModelName] => Array 
       (
        [id] => 1 
        [field1] => value1 
        [field2] => value2 
        [field3] => value3 
       ) 

     ) 
) 

IドンZend_Db_Tableを使用してSELECT JOINクエリを作成して、足の仕事を節約し、整形された結果を得ることができるかどうかは不思議でした。あなたは私が尋ねただけのデータを使用しているものと同じくらいきれい

$select = $db->select(Zend_Db_Table::SELECT_WITH_FROM_PART); 
$select->from('tableName','fieldName') 
    ->join('joinTable', 'joinTable.keyId = tableName.keyId',array()) 
    ->where('tableName.userId = ?', $userId); 
$resultSet = $db->fetchAll($select); 
+0

ケーキの背景からZFで働くことになった人として、私はあなたの苦痛を感じ、あなたが得た答えを見たいと思っています。 – Dunhamzzz

+0

それは確かに選択肢から外れていない、私はあなたにそれほど話すことができます。コードを継承する、どんな楽しい。フィードバックがあるかどうかを見てみましょう。これまでのところ私が見た限りでは近いです:http://mattmccormick.ca/2010/04/24/how-to-easily-create-models-and-table-relationships-in-zend-framework/ – BeesonBison

+0

私はZend Frameworkを使っていると思いますが、MySQL GROUP_CONCAT http://stackoverflow.com/questions/2358300/mysql-join-group-concat-second-tableのようなSQLクエリベースのソリューションを使うことに頼っています – BeesonBison

答えて

1

ナッシング:ここ

は、私は、クエリを構築するために使用しているコードの一種です。 通常のResultは行セットオブジェクトですが、ほとんどの* Zend_DbTable_Abstract *メソッドでは - > toArray()を使用できます。

$ result->のtoArray()切り捨てられ、使用してダンプZend_debug ::ダンプ():

Lead Tracks array(7) { 
    [0] => array(9) { 
    ["trackid"] => string(2) "24" 
    ["weekendid"] => string(1) "8" 
    ["shiftid"] => string(1) "1" 
    ["bidlocationid"] => string(1) "1" 
    ["qty"] => string(1) "2" 
    ["lead"] => string(1) "1" 
    ["bidloc"] => string(14) "out of service" 
    ["deptcode"] => string(3) "491" 
    ["stationid"] => string(1) "1" 
} 

クエリ:

where = $this->select(Zend_Db_Table::SELECT_WITH_FROM_PART) 
        ->setIntegrityCheck(FALSE); 
    $where->where('track.bidlocationid = ?', $bidlocationId) 
      ->where('lead = ?', $lead) 
      ->join('bidlocation', 'bidlocation.bidlocationid = track.bidlocationid') 
      ->where('bidlocation.stationid = ?', $stationId) 
      ->order('shiftid ASC') 
      ->order('weekendid ASC'); 

    $result = $this->fetchAll($where); 

申し訳ありませんが、ちょうどユーティリティ:)

関連する問題