Zend DB выберите присоединиться помощь - PullRequest
1 голос
/ 31 мая 2011

поэтому у меня есть этот код:

$sql = new Zend_Db_Select($db);
$sql->from("j");
$sql->join("k","k.id = j.id",array());
echo $sql;

, что приводит к запросу:

SELECT `j`.* FROM `j` INNER JOIN `k` ON k.id = j.id

но я не просто хочу j. *

Я тоже хочу к. *

как мне указать zend_db_select для этого?

Ответы [ 5 ]

2 голосов
/ 31 мая 2011

Третий параметр для join () - columns для выбора. Вы передали пустой массив.

$sql = new Zend_Db_Select($db);
$sql->from('j');
$sql->join('k','k.id = j.id',array());
echo $sql;

Примечание: для этого условия k.id = j.id вы должны использовать LEFT JOIN (-> joinLeft (...))

1 голос
/ 31 мая 2011

Вы можете указать столбцы в методе from.

$sql->from(array("j" => "j", array("j.*" , "k.*");

Честно говоря, я не совсем уверен, но в документации Zend говорится так:)

0 голосов
/ 31 мая 2011
$sql=new Zend_Db_Select($db);
$sql->from('j',array(
//here fields you want to get from 'j' Ex. 'j.id'
));
$sql->join('k',
// here your condition
'k.id = j.id',
//here the fields you need from 'k'
array(
//now the array is empty!!You need to specify needed fields.
//Or just remove it.Defaults is "k.*"!

));
0 голосов
/ 31 мая 2011

Вы явно указываете объединению, что не хотите возвращать столбцы для k, когда передаете ему пустой массив. Вместо этого используйте:

$sql = new Zend_Db_Select($db);
$sql->from('j');
$sql->joinLeft('k','k.id = j.id');
echo $sql;

Это должно произвести то, что ты хочешь, я думаю.

0 голосов
/ 31 мая 2011

если вы тоже хотите k.*, я думаю, вы должны иметь
$sql->join("k","k.id = j.id");, без этого array() в качестве третьего параметра.
Из того, что я знаю, этот третий параметр указывает столбцы, которые будут выбраны из k, и, поскольку вы передали пустой массив, я предполагаю, что вы переопределяете значение по умолчанию k.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...