Недавно столкнулся с ошибкой "Select query cannot join with another table" при работе с Zend Framework. Текст ошибки сначала просто поставил меня в ступор, поскольку дословно он означает что-то вроде того, что запросы select не могут объединять другие таблицы :) Разумеется это совсем не так и дело оказалось совсем в другом.
Дело в том, что оказывается, в Zend Framework нельзя указывать поля из объединенной таблицы для получения их значений в возвращенной строке.
Например, следующий запрос в Zend Framework не пройдет
Дело в том, что оказывается, в Zend Framework нельзя указывать поля из объединенной таблицы для получения их значений в возвращенной строке.
Например, следующий запрос в Zend Framework не пройдет
$select=$myTable1->select()
->from(array('ft1'=>$myTable1->info('name')),array('ff1'=>'foo'))
->joinLeft(array('ft2'=>$myTable2->info('name')),'ft1.id=ft2.id',array('ff2'=>'foo'));
$rows=$myTable1->fetchAll($select);
Но оказывается можно отключить эту проверку такsetIntegrityCheck(false)
Таким образом, наш предыдущий запрос будет выглядеть так
->from(array('ft1'=>$myTable1->info('name')),array('ff1'=>'foo'))
->joinLeft(array('ft2'=>$myTable2->info('name')),'ft1.id=ft2.id',array('ff2'=>'foo'));
$rows=$myTable1->fetchAll($select);
Но оказывается можно отключить эту проверку такsetIntegrityCheck(false)
Таким образом, наш предыдущий запрос будет выглядеть так
$select=$myTable1->select()
->setIntegrityCheck(false)
->from(array('ft1'=>$myTable1->info('name')),array('ff1'=>'foo'))
->joinLeft(array('ft2'=>$myTable2->info('name')),'ft1.id=ft2.id',array('ff2'=>'foo'));
$rows=$myTable1->fetchAll($select);
->setIntegrityCheck(false)
->from(array('ft1'=>$myTable1->info('name')),array('ff1'=>'foo'))
->joinLeft(array('ft2'=>$myTable2->info('name')),'ft1.id=ft2.id',array('ff2'=>'foo'));
$rows=$myTable1->fetchAll($select);
Комментариев нет :
Отправить комментарий