【问题标题】:SQL match against query giving unpredictable resultsSQL 匹配查询给出不可预测的结果
【发布时间】:2018-06-11 21:30:51
【问题描述】:

我正在尝试在我的数据库中运行以下搜索查询:

User::selectRaw("*, MATCH(first_name, last_name)AGAINST(?)", [$search_string])
            ->whereRaw("MATCH(first_name, last_name)AGAINST(? IN BOOLEAN MODE)", [$search_string])
            ->limit(10)
            ->get();

这可以正常运行几次(有时只有一次),然后我收到错误InvalidArgumentException: Inf and NaN cannot be JSON encoded in file 将新用户添加到数据库时会暂时解决此错误,但在尝试运行查询后会很快返回。我认为这与查询返回的值有关。这个值有时是inf。为什么这个查询的行为如此不可预测?

【问题讨论】:

  • "为什么这个查询的行为如此不可预测?"这不是查询,我更相信 Laravel querybuilder 是这个问题的罪魁祸首。我还想打赌,如果你直接在数据库上尝试生成/编写的 SQL,它每次都会工作。
  • 哦,你是对的!感谢您指出正确的方向,我会尝试找出 Laravel 出了什么问题

标签: mysql sql laravel


【解决方案1】:

我通过用原始语句替换 selectRaw 语句解决了我的问题,如下所示:

User::raw("SELECT * FROM MATCH(first_name, last_name)AGAINST(?)", [$search_string])
            ->whereRaw("MATCH(first_name, last_name)AGAINST(? IN BOOLEAN MODE)", [$search_string])
            ->limit(10)         
            ->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多