Сравните три столбца из двух таблиц Laravel Controller - PullRequest
0 голосов
/ 21 сентября 2019

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

Это мое мнение:

@foreach ($events as $event)
@foreach ($goals as $goal)

@if($event->goalsHome == $goal->home
and $event->goalsDraw == $goal->draw
and $event->goalsAway == $goal->away)

@endif
@endforeach
@endforeach

Но я хочу пройтина мой контроллер, и у меня есть что-то вроде этого:

    public function index()
    {        

        $home = DB::table('goals')->select('home')->where('status','1')->get();
        $draw = DB::table('goals')->select('draw')->where('status','1')->get();
        $away = DB::table('goals')->select('away')->where('status','1')->get();

        $events = DB::table('data')
                ->where('goalsHome' ,'=', $home)
                ->where('goalsDraw' ,'=', $draw)
                ->where('goalsAway' ,'=', $away)
                ->get();
        //return view('results')->with(compact('events'));  

        dd($events);
    }
}

Но это дает мне эту ошибку:

Object of class stdClass could not be converted to string

Как это исправить и какие предложения вы делаете.Заранее спасибо.

Так что теперь я использую другую логику, но она показывает 0 пунктов: (данные являются числами с точками, например: 7.60, 8.00, 1.24)

    public function index()
    {        

$goals= DB::table('goals')->where('status','1')->get();
 foreach($goals as $goal) 
             {
             $eventHome[]=$goal->home;
             $eventDraw[]=$goal->draw;
             $eventAway[]=$goal->away;
             }

$homes = DB::table('data')->where('goalsHome','=', $eventHome)->where('goalsDraw','=', $eventDraw)->where('goalsAway','=', $eventAway)->get();   

dd($homes);

}

Ответы [ 2 ]

0 голосов
/ 22 сентября 2019
$events = Data::all();
 foreach($events as $event) 
             {
             $eventlist[]=$event->goalsHome;
             }
//dd($eventlist)//first perform this dd() 
$home = DB::table('goals')->select('home')->where('status','1')->get();   
            foreach($homes as $home) 
             {//getting all the teams who already played in first round
             $list[]=$home->home;
}
//dd($list);//comment out first dd() , then test this dd()

с помощью метода массива thgis вы можете проверить / сравнить

if(in_array($eventlist,$list)) {
//your login goes here
}
0 голосов
/ 21 сентября 2019

Когда вы вызываете вашу таблицу таким образом, она возвращает объект, а не значение одного столбца.Поэтому вы пытаетесь вставить свой результат, он найдет и возразит вместо строки, для которой вы получите эту ошибку.

// will return stdClass with the format {"goals": 2}
$home = DB::table('goals')->select('home')->where('status','1')->get();

Поэтому, если вы измените свою логику таким образом, ваша логика должна работать.

$events = DB::table('data')
    ->where('goalsHome' ,'=', $home->home)
    ->where('goalsDraw' ,'=', $draw->draw)
    ->where('goalsAway' ,'=', $away->away)
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...