postgres 忽略 -> orWhereHas
postgres ignore -> orWhereHas
我有 2 个版本的应用程序,一个在本地使用 MySQL,另一个是使用 PostgreSQL 在 Heroku 中构建
计划是让搜索表单能够从不同的 table
中查找数据
table 是书籍、作家、类别和出版商
这里是控制器
public function search(Request $request)
{
$keyword = $request->input('keyword');
// multiple query from different table
$query = Book::where('judul','like','%'.$keyword.'%')
->orWhere('label','like','%'.$keyword.'%')
->orWhere('isbn','like','%'.$keyword.'%')
->orWhere('status', 'like', '%'.$keyword.'%')
->orWhereHas('writter', function ($query) use ($keyword) {
$query->where('nama_penulis', 'like', '%'.$keyword.'%');
})
->orWhereHas('category', function ($query) use ($keyword) {
$query->where('nama_kategori', 'like', '%'.$keyword.'%');
})
->orWhereHas('publisher', function ($query) use ($keyword) {
$query->where('nama_penerbit', 'like', '%'.$keyword.'%');
})
;
$book_list = $query->paginate(5);
$pagination = $book_list->appends($request->except('page'));
$total_book = $book_list->total();
return view('dashboards.index', compact('book_list', 'keyword', 'pagination', 'total_book', 'nama_penulis'));
}
该表单在本地(使用我的 MySQL)上非常有效,但是当我使用 Postgres 时,搜索表单只能从书籍中获取 table。
我想知道是什么让 postgres 忽略我的代码
Laracast 上的某个人向我解释说问题出在 like
,对于 Postgres 是区分大小写,这就是我的代码不起作用的原因。
如果你有同样的问题,我建议你使用 ilike
让 POstgres 不敏感。
或者您可以尝试 whereRaw
的替代方法。
我有 2 个版本的应用程序,一个在本地使用 MySQL,另一个是使用 PostgreSQL 在 Heroku 中构建
计划是让搜索表单能够从不同的 table
中查找数据table 是书籍、作家、类别和出版商
这里是控制器
public function search(Request $request)
{
$keyword = $request->input('keyword');
// multiple query from different table
$query = Book::where('judul','like','%'.$keyword.'%')
->orWhere('label','like','%'.$keyword.'%')
->orWhere('isbn','like','%'.$keyword.'%')
->orWhere('status', 'like', '%'.$keyword.'%')
->orWhereHas('writter', function ($query) use ($keyword) {
$query->where('nama_penulis', 'like', '%'.$keyword.'%');
})
->orWhereHas('category', function ($query) use ($keyword) {
$query->where('nama_kategori', 'like', '%'.$keyword.'%');
})
->orWhereHas('publisher', function ($query) use ($keyword) {
$query->where('nama_penerbit', 'like', '%'.$keyword.'%');
})
;
$book_list = $query->paginate(5);
$pagination = $book_list->appends($request->except('page'));
$total_book = $book_list->total();
return view('dashboards.index', compact('book_list', 'keyword', 'pagination', 'total_book', 'nama_penulis'));
}
该表单在本地(使用我的 MySQL)上非常有效,但是当我使用 Postgres 时,搜索表单只能从书籍中获取 table。
我想知道是什么让 postgres 忽略我的代码
Laracast 上的某个人向我解释说问题出在 like
,对于 Postgres 是区分大小写,这就是我的代码不起作用的原因。
如果你有同样的问题,我建议你使用 ilike
让 POstgres 不敏感。
或者您可以尝试 whereRaw
的替代方法。