2014-10-17 7 views
0

В качестве примера для этого вопроса позвольте мне использовать телешоу, фильмы и актеры. В каждом телешоу и фильме есть несколько актеров, и каждый актер участвует в одном или нескольких телешоу и/или в фильмах. Если я установил полиморфные отношения «многие-ко-многим» между ними, кажется, что я могу запросить актера для всех его телешоу и всех его фильмов отдельно, но, несмотря на весь Google, я могу придумать, я не нашел способ запросить объединение всех телевизионных шоу актера и/или фильмов в одной коллекции. Разве это не полезность полиморфных отношений «ко многим»?Как использовать полиморфные отношения «многие ко многим» в Laravel 4.1?

Если окажется, что это действительно возможно, я, вероятно, добавлю заметки, включая таблицу и модель, для достижения этой цели, потому что я еще не смог ее запустить. Если это невозможно, можете ли вы помочь мне понять цель таких отношений, потому что я, очевидно, не понимаю этого. Мне кажется, что без этого запроса я ничего не выиграю от использования двух отношений «многие ко многим».

ответ

0

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

Пример модели для демонстрации

class actor 
{ 
    public function tv_shows() 
    { 
     return ... 
    } 
    public function movies() 
    { 
     return ... 
    } 
} 

Вы могут сочетать их так:

actor::get(1)->movies->merge(actor::get(1)->tv_shows); 

Это вернет единую коллекцию фильмов и телевизионных шоу.

Чтобы сделать жизнь проще создать функцию последующей в вашем классе актер

public function tvAndMovies() 
{ 
    return self::movies->merge(self::tv_shows); 
} 

Будем надеяться, что помогает

+0

Вы правы, что это не дает ответа на вопрос, так как вы могли бы сделать это с любыми двумя запросами и поэтому цель полиморфных отношений «много-ко-многим» по-прежнему остается необъяснимой, но она дает результаты, которые я ищу прямо сейчас, и кажется довольно разумным способом сделать это. Спасибо вам за это! – a300600st

Смежные вопросы