1

Если у вас есть сложный SQL запрос с участием многих объединений (например, возвращающейся Статью и связанные с ними многие ко многим тегам) есть все, что в Zend Framework, который будет производить прекрасные результаты в базе данных стиля CakePHP:Результаты запроса базы данных стиля CakePHP в Zend Framework с использованием Zend_Db_Table?

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

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

     ) 
) 

Я не Не возражаете, если это объект, а не массив, мне просто интересно, с помощью 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, я прибегаю к использованию решений на основе SQL-запросов, таких как MySQL GROUP_CONCAT http://stackoverflow.com/questions/2358300/mysql-join-group-concat-second-table – BeesonBison

ответ

1

Ничто так хорошо, как то, что вы привыкли только данные, которые я просил. Обычный результат будет объектом набора строк, однако -> toArray() доступен для большинства методов * Zend_DbTable_Abstract *.

$ 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); 

извините, просто утилита :)