@NubasLol

Возможно ли создать кастомную связь?

Например вместо такого, в модели Order

public function order
{
    return $this->belongsTo('App\Order');
}


Что то типо

public function order
{
    return self::query()->where('cost',  '>',  $this->cost);
}


Пример чисто условный. Задача работать с мои запросом, словно с отношением. Использовать with, withCount и т.д
  • Вопрос задан
  • 331 просмотр
Решения вопроса 1
@NubasLol Автор вопроса
Решил вопрос реализовав кастомный метод, который добавляет связь к коллекции моделей.

matchMany($models, $queryResults, $relation, $related, $foreignKey, $primaryKey)


UPD

Передалал совсем иначе

public function relatedOrders()
    {
        return $this->hasMany(self::class, "parent_id", "id")->fromHighPriceOrders();
    }


И все отлично будет работать. Через подзапросы для кажого заказа, находим id заказов с большей ценой, и делаем joion таких заказов. Затем свзязываем) на удивление работает быстро
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Кажется я понял ...
Читаем про scope's

public function scopeCost($query,$value)
    {
        return $query->where('cost', '>', $value);
    }


$data = Order::cost(100)->get();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы