У меня есть две таблицы: продукт с полями идентификатора, имени, цены и бренда и бренд с полями идентификатора, имени, 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 Неизвестный столбец "product.product.id" в "списке полей"
Какова хорошая практика для запроса: выберите p.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;
}
Я нашел, как поместить псевдоним для соединяемых таблиц, но как насчет продукта базовой таблицы?