2013-09-24 5 views
0

У меня есть много-много отношений между таблицей книг и таблицей авторов. Сводная таблица (author_book) содержит author_id и book_id.Laravel поиск во многих отношениях

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

Что мне нужно что-то вроде этого ...

return View::make('result')->with('books', Book::with('authors') ->where('title', 'LIKE', '%'.$keyword.'%') ->orWhere('**authors->table->name**', 'LIKE', '%'.$keyword.'%')->get());

мне нужен способ также поиск таблицы авторов и проверить это ключевое слово maches имя автора.

Соотношение установлено как в моей авторе, так и в книжной модели.

Любая помощь будет оценена

+0

Посмотрите на мой ответ на http://stackoverflow.com/questions/18634398/eloquent-calling-where-on-a-relation/18634716# 18634716 - это также о добавлении того, где на отношение. –

+0

Как-то это не работает для меня, потому что мне нужно использовать переменную $ ключевого слова внутри функции. – 303K

+0

@ 303K вы можете передавать параметры, такие как ваше ключевое слово $, в закрытие с помощью конструкции '' use' language '(http://php.net/manual/en/functions.anonymous.php#example-160). –

ответ

0

Это не может быть идеальным решением, но для сложных запросов, как это я считаю, что легче просто использовать необработанные запросы SQL.

Нечто подобное в этом случае:

$result = DB::select(DB::raw("SELECT * 
           FROM books 
           INNER JOIN authors 
           WHERE books.title LIKE '%$keyword%' 
           OR authors.name LIKE '%$keyword%' ")); 
+0

Спасибо Karolis! Ты указал мне в правильном направлении! – 303K

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