У меня есть модель Product, в которой есть множество SalePrices (поскольку они меняются со временем), которые хранятся в двух таблицах базы данных, связанных внешним ключом и красноречивыми отношениями:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
public function sale_prices()
{
return $this->hasMany('App\SalePrices');
}
}
Что я пытаюсь сделать Это фильтр продуктов на основе входящего запроса Http-запроса, поэтому я получаю список продуктов в моем контроллере:
$products = Product::whereIn('type', $request->types)->where('active', 1);
И затем я проверяю минимальную или максимальную цену и пытаюсь отфильтровать соответственно:
if ($request->has('min_price')) {
$products->sale_prices()->where('price', '>=', $request->min_price);
}
if ($request->has('max_price')) {
$products->sale_prices()->where('price', '<=', $request->max_price);
}
$products = $products->get();
Это не работает, и выдает мне эту ошибку:
Call to undefined method Illuminate\Database\Eloquent\Builder::sale_prices()
Я понимаю, что переменная $ products теперь является коллекцией элементов, но я не уверен, как применить мой фильтр к ним. Я могу через них oop, но как мне применить искомое предложение where?