我在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表,并检查关键字是否匹配了author名称。

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

任何帮助将不胜感激

最佳答案

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

在这种情况下是这样的:

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

关于php - Laravel寻找多对多关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18990656/

10-12 14:11