2013-09-24 56 views
0

我在Books表和Authors表之间有多对多的关系。数据透视表(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());

我需要一种方法来同时搜索authors表和检查是关键字maches作者姓名。

该关系在我的作者和书籍模型中均已设置。

任何帮助将不胜感激

+0

看一看我的答案在http://stackoverflow.com/questions/18634398/eloquent-calling-where-on-a-relation/18634716# 18634716 - 它也是关于在关系中添加一个地方。 –

+0

不知何故,这对我不起作用,因为我需要在函数中使用$关键字变量。 – 303K

+0

@ 303K,您可以使用['use'语言构造]将参数(例如'$ keyword')传递给闭包(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