【问题标题】:postgres ignore -> orWhereHaspostgres 忽略 -> orWhereHas
【发布时间】:2018-06-18 09:52:32
【问题描述】:

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

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

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

这里是控制器

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 忽略了我的代码

【问题讨论】:

  • 尝试检查查询的原始 sql。在查询末尾添加 toSql() 并检查您是否可以使用原始 SQL 识别某些内容。

标签: postgresql laravel heroku laravel-5.2


【解决方案1】:

Laracast 上的某个人向我解释说问题出在 like,这对于 Postgres 来说区分大小写,这就是我的代码不起作用的原因。

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

或者您可以通过whereRaw 尝试替代方法。

【讨论】:

    猜你喜欢
    • 2015-05-13
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    相关资源
    最近更新 更多