Если вы хотите много предложений для одного продукта, то вы должны использовать hasMany.Продукт имеет много предложений.
Именно так вы должны моделировать отношения в своих моделях.Я имею в виду, подумайте об этом, если у вас есть одна книга в вашем магазине, и у нее может быть только одно предложение, которое не имеет смысла.
Хорошо, теперь, чтобы получить все книги, которые имеют только 1 предложение,я просто могу думать что-то вроде этого:
SELECT p.id FROM products p JOIN offers o ON(p.id=o.product_id) WHERE p.id IN (
SELECT oo.product_id FROM offers oo GROUP BY oo.product_id WHERE SUM(oo.product_id)=1
)
Попробуйте ввести это в синтаксис Model::find()
, или просто используйте метод Model::query()
.
РЕДАКТИРОВАТЬ:
Если вы хотите предложение с большей ценой.
SELECT p.id FROM products p JOIN offers o ON(p.id=o.product_id) WHERE p.id IN (
SELECT oo.product_id FROM offers oo GROUP BY oo.product_id WHERE OO.id = MAX(oo.price)
)