0
我有兩個表:產品與ID,名稱,價格和品牌領域和品牌與ID,名稱,網址字段。我想從這兩個表中選擇兩個字段。 我無法定義列和定義別名。select columns invalidQueryExeption
的productTable
...
public function fetchAll()
{
$select = new Select;
$select->from($this->table);
$select->join('brand', 'product.brand = brand.id', array('name', 'url'));
$select->columns(array('product.id', 'name', 'price'));
$statement = $this->adapter->createStatement();
$select->prepareStatement($this->adapter, $statement);
$resultSet = new ResultSet();
$resultSet->initialize($statement->execute());
return $resultSet;
}
消息:SQLSTATE [42S22]:列未找到:1054未知列在 '字段列表'
什麼是好習慣的請求 'product.product.id' : 選擇p.id爲ID,p.name姓名,p.price,b.id爲brandid,b.name名優產品...
試了幾次後,我發現這個解決方案:
public function fetchAll()
{
$select = new Select;
$select->from($this->table);
$select->join(array('b' => 'brand'), 'product.brand = b.id', array('brandid' => 'id', 'brandname' => 'name', 'url'));
$select->columns(array('id', 'name', 'price'));
$statement = $this->adapter->createStatement();
$select->prepareStatement($this->adapter, $statement);
$resultSet = new ResultSet();
$resultSet->initialize($statement->execute());
return $resultSet;
}
我發現如何在連接表上放置別名,但基表產品呢?
第一個解決方案很好地工作。結果是:SELECT「p」。*,「b」。「id」AS「brandid」,「b」。「name」AS「brandname」,「b」。「url」AS「url」FROM「product」AS 「p」INNER JOIN「品牌」AS「b」ON「p」。「品牌」=「b」。「id」。但與第二個解決方案,像這樣$ select-> from(array('p'=> $ this-> table),array('id','name'));結果是一樣的,雖然我沒有添加字段「價格」。 – bsg78
檢查編輯。 –