php – Zend DB只选择1个具有多个连接的表

我正在使用Zend DB使用以下代码生成查询:

$table->select()
        ->setIntegrityCheck(false) //required for multi-table join
        ->from('modules')
        ->joinInner(
            'basket_modules',
            'modules.id = basket_modules.id')
        ->joinInner(
            'baskets',
            'baskets.id = basket_modules.basket_id')
        ->where('baskets.id = ?', $this->id);

这会生成SQL:

SELECT modules.*, basket_modules.*, baskets.*
FROM modules
INNER JOIN basket_modules ON modules.id = basket_modules.id
INNER JOIN baskets ON baskets.id = basket_modules.basket_id
WHERE (baskets.id = '3')

我的问题在于SELECT部分​​,它选择所有3个表而不仅仅是模块,这是我想要的.所以我想要生成的查询是:

SELECT `modules`.*
FROM `modules`
#etc...

我怎样才能做到这一点?如果我手动编辑查询并运行它,它会返回我想要的内容,因此语法应该没有问题.

最佳答案
请查看手册Zend_Db_Select中的示例.滚动到示例#13.

To select no columns from a table, use an empty array for the list of
columns. This usage works in the from() method too, but typically you
want some columns from the primary table in your queries, whereas you
might want no columns from a joined table.

$select = $db->select()
         ->from(array('p' => 'products'),
                array('product_id', 'product_name'))
         ->join(array('l' => 'line_items'),
                'p.product_id = l.product_id',
                array() ); // empty list of columns

转载注明原文:php – Zend DB只选择1个具有多个连接的表 - 代码日志