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 的替代方法。