我有两个表:带有 id、名称、价格和品牌字段的产品和带有 id、名称、url 字段的品牌。我想从这两个表中选择两个字段。我无法定义列并定义别名。
产品表
...
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 未知列 'field list' 中的 'product.product.id'
请求的最佳做法是什么:选择 p.id 作为 id,p.name 作为名称,p.price,b.id 作为品牌标识,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;
}
我找到了如何在连接表上放置别名,但是基表产品呢?