Используйте атрибут модели в области видимости - PullRequest
0 голосов
/ 14 октября 2019

Я определил атрибут в своей модели и хочу использовать его в области.

protected $appends = ['lowest_price'];

public function getLowestPriceAttribute()
{
    $lowest_price = NULL;
    foreach($this->shops as $shop) {
        if(is_null($lowest_price)) { 
            $lowest_price = (double)$shop->pivot->price;
        }

        if($lowest_price > (double)$shop->pivot->price) {
            $lowest_price = (double)$shop->pivot->price;
        }
    }
    return $lowest_price;
}

Атрибут lower_price, который я хотел бы использовать в области, но он всегда равен нулю:

public function scopeMaxPrice(Builder $query, $max_price): Builder {
    return $query->where('max_price', '>=', $this->lowest_price);
}

Если я дд ();Функция getLowestPriceAttribute в области видимости также возвращает 'null'. На мой взгляд, у меня есть доступ к атрибуту lower_price.

Может ли атрибут быть частью запроса? Если нет, есть ли элегантное решение?

РЕДАКТИРОВАТЬ: область вызывается в контроллере продукта:

public function index()
{
    $products = QueryBuilder::for(Product::class)
        ->allowedFilters(
            AllowedFilter::exact('type_id')->default('1'),
            AllowedFilter::scope('min_speed')->default(0),
            AllowedFilter::scope('min_range')-> default(0)
           # AllowedFilter::scope('max_price')-> default(999)
        )
        ->get();

    $types = DB::table('types')->pluck('name', 'id');
    return view('pages.home', compact('products', 'types'));
}

Примечание: я использую построитель запросов Spatie

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...