Код: Выделить всё
public function getImages()
{
$imgs = $this->hasMany(Images::className(), ['id' => 'images_id'])
->viaTable(ProductImages::tableName(), ['product_id' => 'id']);
return $imgs;
}
Код: Выделить всё
public function getImages()
{
$imgs = $this->hasMany(Images::className(), ['id' => 'images_id'])
->viaTable(ProductImages::tableName(), ['product_id' => 'id']);
return $imgs;
}
Код: Выделить всё
public function getImages()
{
return $this->hasMany(Images::className(), ['id' => 'images_id'])
->viaTable(ProductImages::tableName(), ['product_id' => 'id'])
->orderBy(['sort' => SORT_ASC]);
}
Код: Выделить всё
public function getImages()
{
return $this->hasMany(Images::className(), ['id' => 'images_id'])
->viaTable(ProductImages::tableName(), ['product_id' => 'id'])
->join('INNER JOIN', 'product_images', 'product_images.id = image.id')
->orderBy(['product_images.sort' => SORT_ASC]);
}
Второй примет работает в виде:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sort' in 'order clause'
The SQL being executed was: SELECT * FROM `images` WHERE `id` IN ('76', '83', '91', '98') ORDER BY `sort`
Код: Выделить всё
public function getImages()
{
$imgs = $this->hasMany(Images::className(), ['id' => 'images_id'])
// Таблица соответствия
->viaTable(ProductImages::tableName(), ['product_id' => 'id'])
// Сортировка
->join('INNER JOIN', 'product_images', 'product_images.images_id = images.id')
->orderBy(['product_images.sort' => SORT_ASC]);
return $imgs;
}
Код: Выделить всё
public function getImages()
{
$imgs = $this->hasMany(Images::className(), ['id' => 'images_id'])
// Таблица соответствия
->viaTable(ProductImages::tableName(), ['product_id' => 'id'])
// Сортировка
->join('INNER JOIN', 'product_images', 'product_images.images_id = images.id')
->orderBy(['product_images.sort' => SORT_ASC]);
return $imgs;
}
Код: Выделить всё
SELECT full,title FROM images
INNER JOIN product_images ON product_images.images_id = images.id
WHERE images.id IN (9,841,842,843)
ORDER BY product_images.sort
Код: Выделить всё
$imgs->andWhere(["product_images.product_id" => $this->id])
соврал, наоборот подойдут, вот вариант с joinWith:pavlm писал(а):те реляции которые генерируются при создании модели скорее всего не подойдут для этой задачи.
Код: Выделить всё
public function getImages()
{
$imgs = $this->hasMany(Images::className(), ['id' => 'images_id'])
->via('productImages') // реляция для моделей ProductImage
->joinWith('productImages')
->orderBy(['product_images.sort' => SORT_ASC]);
->andWhere(["product_images.product_id" => $this->id]);
return $imgs;
}
Код: Выделить всё
$query = (new \yii\db\Query())
->select([
'item.id AS id',
'item.alias AS alias',
'item.parent_id AS parent_id',
'item.template_id AS template_id',
'template.name AS template_name'
])
->from('catalog_items item')
->leftJoin('catalog_items_template template', '`template`.`id` = `item`.`template_id`')
->where('category_id=:category_id AND disabled=0 AND alias=:alias',[':category_id'=>$_category['id'], ':alias'=>$item]);
$command = $query->createCommand();
$_item = $command->queryAll();
Выдает "common\models\Product has no relation named "product_images". Calling unknown method: common\models\Product::getproduct_images()". Причем не понятно что должно быть в этом методе Product::getproduct_images()?pavlm писал(а):соврал, наоборот подойдут, вот вариант с joinWith:pavlm писал(а):те реляции которые генерируются при создании модели скорее всего не подойдут для этой задачи.Код: Выделить всё
public function getImages() { $imgs = $this->hasMany(Images::className(), ['id' => 'images_id']) ->via('productImages') // реляция для моделей ProductImage ->joinWith('productImages') ->orderBy(['product_images.sort' => SORT_ASC]); ->andWhere(["product_images.product_id" => $this->id]); return $imgs; }
Должна быть реляция от product к product_images, и модель ProductImages тоже необходима, если у вас прописаны в БД все внешние ключи, то при генерации модели эта реляция должна была сама получиться.andreyrud писал(а): Выдает "common\models\Product has no relation named "product_images". Calling unknown method: common\models\Product::getproduct_images()". Причем не понятно что должно быть в этом методе Product::getproduct_images()?