Действительно новичок в работе с моделью CI4 и изо всех сил пытается адаптировать мои существующие запросы MySQL JOIN для работы с примерами в его руководстве пользователя.
Я адаптировал часть своего кода так:
public function brand_name($brand_name_slug)
{
return $this->asArray()
->where('availability', 'in stock')
->where('sku !=', '')
->where('brand_name_slug', $brand_name_slug)
->groupBy('gtin')
->orderBy('brand_name, subbrand_name, product, size, unit')
->findAll();
}
Это работает нормально. Я просмотрел примеры и понял, что могу добавить код ->table('shop a')
, и он все еще работает, но мне также нужно добавить следующий оператор JOIN:
JOIN (SELECT gtin, MIN(sale_price) AS sale_price FROM shop GROUP BY gtin) AS b ON a.gtin = b.gtin AND a.sale_price = b.sale_price
Как только я добавляю ->join('shop b', 'a.gtin = b.gtin and a.sale_price = b.sale_price')
, я получаю сообщение об ошибке «404 — файл не найден».
Когда я просматриваю все примеры соединений CI4 и адаптирую свой код, мой цикл foreach($shop as $row)
генерирует ошибку «Упс...», потому что они заканчиваются на getResult()
или getResultArray
вместо findAll()
.
Каков путь вперед, и мне нужно изменить мой цикл foreach
.
Полный оператор MySQL:
SELECT * FROM shop a JOIN (SELECT gtin, MIN(sale_price) AS sale_price FROM shop GROUP BY gtin) AS b ON a.gtin = b.gtin AND a.sale_price = b.sale_price WHERE availability = 'in stock' AND sku != '' AND brand_name_slug = $brand_name_slug GROUP BY gtin ORDER BY brand_name, subbrand_name, product, size
SELECT *
- person Strawberry   schedule 03.06.2020SELECT *
, поэтому вам нужно выяснить, чего вы на самом деле хотите. - person Strawberry   schedule 03.06.2020