Laravel寻找多对多的关系

时间:2013-09-24 19:44:56

标签: php mysql many-to-many laravel-4 eloquent

我在Books表和Authors表之间有很多关系。数据透视表(author_book)包含author_id和book_id。

我希望我的用户能够使用简单的搜索表单搜索数据库。每当用户输入关键字时,我想要搜索两个表中的字段。

我需要的是这样的......

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

我需要一种方法来搜索authors表,并检查关键字是否为作者姓名。

我的作者和书籍模型都建立了这种关系。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

这可能不是理想的解决方案,但对于像这样的复杂查询,我发现简单地使用原始SQL查询更容易。

在这种情况下是这样的:

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