Прежде всего, $ko
не содержит результатов запроса, пока вы не передадите ему закрытие, в этом случае ->first()
.
$ko = DB::select('SELECT * FROM points WHERE round="first" ORDER BY points DESC , run_rate DESC LIMIT 4')->first();
Далее необходимо сравнить значениеот $ko->team
до $matches->team1
или $matches->team2
:
if($ko->team == $matches->team1 || $ko->team == $matches->team2) {
...
}
Наконец, некоторые убираются.Запрос БД можно упростить, используя синтаксис Eloquent
вместо необработанного SELECT
:
$ko = DB::table("points")
->where("round", "=", "first")
->orderBy("points", "DESC")
->orderBy("run_rate", "DESC")
// ->limit(4) // Removing this; incompatible with `->first()`
->first();
Есть еще одна логическая ошибка;если вам нужно limit(4)
, то вы не можете использовать ->first()
, вам нужно будет использовать ->get()
, который затем создает Collection
, который нельзя сравнить с $matches
, если вы не выполните цикл:
$kos = DB::table("points")...->get();
$matches->round = "first";
foreach($kos AS $ko){
if($ko->team == $matches->team1 || $ko->team == $matches->team2) {
$matches->round = "ko";
break;
}
}
В общем, вам необходимо пересмотреть то, что вы пытаетесь сделать, и прочитать синтаксис Eloquent, как выполнять запросы и возвращать результаты, как выполнять циклы, получать доступ к свойствам и сравнивать эти результаты.и т. д.
Редактировать: Поскольку вы выполняете цикл и сравнение, установите значение по умолчанию $matches->round
на «первое», затем, при циклическом выполнении, если условие сравнения равно true
, переопределите $matches->round
на "ко" и вырваться из петли.