【发布时间】:2023-03-27 16:34:01
【问题描述】:
我有一个书本表,其中包含我的主题表上的许多主题(一对多关系)。
我尝试像这样加入我的表:
$book = Book::latest()
->leftjoin('subjects', 'books.id', '=', 'subjects.book_id')
->select('books.*', 'subjects.subject')
->where('subject', 'like', '%' .$search. '%')
->paginate(20);
我想要一个搜索查询,该查询将显示主题与$search 变量匹配的书籍。但是,它会根据与 $search 变量匹配的书籍的主题数量来重复显示一本书,因为一本书有很多主题。
我只想展示一本书一次,不管这本书匹配了多少个主题。
下图是我搜索查询的输出,$search= ""的值
题为“特殊教育评估:影响当今课堂的问题策略”的书(参见第一张图片;因为那本书的主题是 6,所以它被重复了 6 次)
【问题讨论】:
-
尝试添加
->groupBy('books.id')->paginate(20); -
它只是给了我这个错误 SQLSTATE[42000]: Syntax error or access violation: 1055 'bisu_ccc_library.books.ISBN' is not in GROUP BY (SQL: select distinct
books.*,subjects.subjectfrombooksleft joinsubjectsonbooks.id=subjects.book_idwheresubjectlike %a% order@ group by @9876543339@. bycreated_atdesc limit 20 offset 0) -
你用的是女巫版的 laravel 吗?