Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.09.2015 19:53:27

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Laravel belongsToMany

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

Resta model

public function kitchens()
{
return $this->belongsToMany('App\Kitchen')->withTimestamps();
}


Kitchen model

public function resto()
{
return $this->belongsToMany('App\Resto');
}

допустим с формы приходит массив с id кухни, как получить заведение у которых есть эти кухни ?

Не в сети

#2 08.09.2015 21:03:35

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel belongsToMany

решено! можно закрыть, поспешил

Не в сети

#3 08.09.2015 23:09:23

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel belongsToMany

стойте а как быть если нужно проверить сразу в двух пивотных таблицах на наличие объектов с заданным id ?

Не в сети

#4 09.09.2015 11:46:53

Arat
Откуда: Киев
Сообщений: 116

Re: Laravel belongsToMany

nemocoder пишет:

стойте а как быть если нужно проверить сразу в двух пивотных таблицах на наличие объектов с заданным id ?

Уточните вопрос.
Как вариант еще оно отношение запилить и пользовать.

Не в сети

#5 09.09.2015 18:33:02

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel belongsToMany

Arat пишет:
nemocoder пишет:

стойте а как быть если нужно проверить сразу в двух пивотных таблицах на наличие объектов с заданным id ?

Уточните вопрос.
Как вариант еще оно отношение запилить и пользовать.

Смотри у меня модель Resto связывается еще с Service

public function services()
    {
        return $this->belongsToMany('App\Service')->withTimestamps();
    }


public function restos()
    {
        return $this->belongsToMany('App\Resto');
    }

для проверки kitchens я делаю так

        $services = Request::get('services');
       
        $kitchen = Request::get('kitchen');
        
        $restos = Resto::whereHas('kitchens', function ($query)use ($kitchen) {
                $query->whereIn('id', $kitchen);
            })->get();

но мне в запросе приходит еще services по аналогии точно так же нужно проверить вместе с kitchens

Не в сети

#6 10.09.2015 20:03:30

nemocoder
Откуда: Almaty, Kazakhstan
Сообщений: 69

Re: Laravel belongsToMany

сработало

 
 $restos = Resto::whereHas('services', function($query)use ($service){
            $query->whereIn('id',$service);
        })
            ->whereHas('kitchens', function($query)use ($kitchen){
                $query->whereIn('id',$kitchen);
            })
            ->get();

Изменено nemocoder (10.09.2015 20:05:53)

Не в сети

Подвал раздела