У меня была та же проблема, и это происходит, когда я создаю новый проект.
То, что я делаю, это:
Это работает для меня.
Прежде всего, $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
на «first», затем, при циклировании, если условие сравнения - true
, переопределите $matches->round
на «ko» и прервите из цикла.