postgres ignore - > orWhereHas

时间:2018-01-09 11:10:26

标签: postgresql laravel heroku laravel-5.2

我有2个版本的应用程序,一个在本地使用MySQL,另一个是使用PostgreSQL在Heroku中构建

计划是让搜索表单能够从不同的表中查找数据

该表格是书籍,作家,类别和出版商

控制器

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时,搜索表单只能从books表中获取。

我想知道是什么让postgres忽略了我的代码

1 个答案:

答案 0 :(得分:0)

Laracast上的某个人向我解释问题来自like对于Postgres 区分大小,这就是为什么我的代码无效。

如果您遇到同样的问题,我建议您使用ilike使POstgres不敏感。

或者您可以尝试whereRaw替代方式。