You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8中如何验证MySQL数据表内是否存在指定哈希码

问题根因

你遇到的问题由两个错误导致,和Laravel版本升级没有直接关联:

  1. hashExists方法没有返回查询结果,调用该方法永远得到null,判断null < 1永远成立,直接触发跳转逻辑
  2. where条件的传参格式不符合Laravel查询构造器要求,导致查询条件永远不匹配

修复步骤

1. 修正Form控制器的hashExists方法

修改后的代码如下:

/**
 * 统计符合指定ID的条目数量
 */
public function hashExists($hashCode)
{
    return Referralrequestapplication::where('blocked', 0)
        ->where('image_reference', $hashCode)
        ->count();
}

如果你习惯用数组传多个where条件,正确写法是where([['blocked', 0], ['image_reference', $hashCode]]),要把所有条件包在同一个外层数组里。

2. 可选性能优化

可以直接用Laravel提供的exists方法替代count判断,查询性能更高:

public function hashExists($hashCode)
{
    return Referralrequestapplication::where('blocked', 0)
        ->where('image_reference', $hashCode)
        ->exists();
}

对应调用处的判断逻辑也可以简化为:

if(!$hash_exists)
{
    // 原有跳转逻辑
}

额外注意

你的模型$fillable数组里写的字段是review,但迁移文件中对应的字段是reviewed,后续做写入操作时会出现字段不存在的错误,建议同步修正。

内容的提问来源于stack exchange,提问作者Yemi A.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:06:03