tigra, счетчик теперь показывает как надо, но подскажите как теперь быть с фильтрами по baskets? они перестали работать выдавая error:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'baskets.amount' in 'where clause'
The SQL being executed was: SELECT COUNT(*) FROM `orders` WHERE (baskets.amount = 5 AND baskets.sku = 'db')
сам фильтр выглядит так (работал до момента когда я leftJoin поменял на связь) :
if($this->basket) {
$basketArr = Baskets::str2arr($this->basket);
if(!count($basketArr)) {
$query->andWhere("baskets.amount LIKE '%{$this->basket}%' OR baskets.sku LIKE '%{$this->basket}%'");
} else {
$q = [];
foreach($basketArr as $sku => $amount) {
$q[] = "(baskets.amount = {$amount} AND baskets.sku = '{$sku}')";
}
$q = implode(' OR ', $q);
$query->andWhere($q);
}
}
Радость моя, ой ой ой, используйте ActiveQuery, плохая практика писать на чистом SQL
with по сути делает дополнительный запрос к выборке, т.е. вы не можете в таком случае задавать условие, но т.к. тут используется фильтр можно сделать как то так, во первых приведите к одному виду ещё на этапе получение $this->basket, если это массив то массив, если строка то строка, допустим хоть при одном хоть при нескольких значениях мы получаем массив, тогда такой подход будет более понятный и интересный
tigra, так тоже к сожалению не але. такая же ошибка - не понимает что в запросе еще учавствует таблица baskets:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'baskets.amount' in 'where clause'
The SQL being executed was: SELECT COUNT(*) FROM `orders` WHERE (`baskets`.`amount` LIKE '%5%') OR (`baskets`.`sku` LIKE '%0%')