2015-05-09 64 views
0

我试图解决我的问题,因为2小时后,仍然没有任何解决方案。也许有人会看到我做错了什么。 我想要做的是使用zend框架从数据库中选择行。 这是什么查询我想选择:从数据库中加入Zend DB SELECT

SELECT * FROM `products_stock` JOIN `options_stock_values` ON `options_stock_values`.`stock_id` = `products_stock`.`stock_id` WHERE `product_id` = 119 

这是一个简单加入的完美的作品在phpMyAdmin,但我在我的PHP代码不能这样想选择此项。

 $select = $this->entity("ProductsStock")->select(); 
     $select->join('options_stock_values','options_stock_values.stock_id = products_stock.stock_id',array()); 
     $select->where("product_id = ?", $this->stock->product_id); 
     $select->where("extended = ?", 1); 
     $rowset = $this->entity("ProductsStock")->fetchAll($select); 

     return $rowset; 

这就是我试图从数据库中选择我的行的方式。我从正常工作的实体中选择ProductsStock。但是,当我将JOIN函数添加到我的查询中时,它甚至会忽略WHERE语句,并期望这一行有多行。

例如, 有没有JOIN的数据库查询我得到两行(我期待他们),但是当我添加JOIN与options_stock_values表时,它给了我像20行没有来自第二表的列的东西。

它只是从第一个表(ProductsStock)返回20行,而不是来自ProductsStock的两行,与OptionsStockValues和第二个表中的列连接。

我认为我的php代码看起来很好,但也许我做了错误的事情吗?任何人都可以帮助我,甚至给我小建议吗?

+0

你能否提一下zend框架版本? – ashish

回答

0

我建议,包括在FROM子句中的选择对象:

$select = $this->entity("ProductsStock")->select(); 
$select->from(array('p'=>'products_stock'),array('*')) 
    ->join(array('o'=>'options_stock_values'),'p.stock_id=o.stock_id',array('*')) 
    ->where('product_id = ?',119); 

没有看到你的表中的数据,我不知道你会得到你所寻求的结果,但这个代码表示SQL你在问题的顶部提供。