Получить корты в комплексах с минимальной ценой - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть спортивные комплексы и много кортов в комплексах. Поэтому я хочу выбрать комплексы по минимальной цене суда.

Complex1   court1 -price 2500
           court2  - price 3000
Complex2   court1 -price 5000
           court2 -price 1500
Result: Complex2(1500),Complex1(2500)

DB:

sport_complexes - 
    sc_id -compex id
    sc_city_id 
    sc_sport_type_id 
one to many 
courts-
    c_id 
    c_complex_id  -complex id
    c_coverage_id
    c_name
    c_cost  -price

Я пробовал вот так.

get all complexes to special sport type
$complexes = $sporttype->complexes;

ids of complexes        
$complexesIDs=$complexes->pluck('sc_id'); 

wanna order 
$array=\App\Models\Courts::whereIn('c_complex_id', $complexesIDs)->orderBy('c_cost')->get()->unique('c_complex_id ')

1 Ответ

0 голосов
/ 20 февраля 2020

Это кажется довольно простым для решения, у вас может быть это в вашем классе спортивного типа (я даже не знаю, является ли это классом):

public function complexes(){
    return $this->hasMany('App\Complex');
}

Вы можете создать новую функцию, чтобы получить Комплексы, упорядоченные по стоимости:

public function complexesOrdered(){
    return $this->hasMany('App\Complex')->orderBy('c_cost');
}

Другое решение заключается в том, чтобы определить отношение как функцию, поэтому вы можете "запросить" его:

$complexes = $sporttype->complexes()->orderBy('c_cost');

Приветствия!

РЕДАКТИРОВАТЬ:

Вы должны сделать еще одно отношение к свершившемуся sh, что:

В вашем сложном классе:

public function courts(){
    return $this->hasMany('App\Court');
}
public function cheapCourt(){
    return $this->hasMany('App\Court')->orderBy('c_cost');
}

В вашем контроллере:

complex->cheapCourt->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...