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

Laravel中如何判断模型pluck返回值与指定字符串是否相等

问题原因说明

你当前对比失败的核心原因有两点:

  1. pluck() 方法返回的是 Illuminate\Support\Collection 集合对象,不是纯字符串。直接传入strcmp做对比时,集合会被自动序列化为JSON字符串,也就是你输出看到的[["مؤهل"]]格式文本,和单独的"مؤهل"字符串对比自然不相等。
  2. 你拿到的集合是二维结构,说明关联查询返回的结果是嵌套数组形式。

构造匹配[["مؤهل"]]格式的变量

这个格式是标准二维数组结构,直接声明即可:

$targetStructure = [["مؤهل"]];
// 要和pluck的输出做结构一致性对比,先把集合转为数组即可
$isStructureMatched = $checkResult->toArray() === $targetStructure;

验证取值是否等于مؤهل

根据你的关联类型选择对应方案即可:

  • 如果InitialStudy()是一对一关联(只会返回单条数据),不需要用pluck,直接取关联字段即可:
    $isValueEqual = Auth::user()->InitialStudy->result === "مؤهل";
    
  • 如果InitialStudy()是一对多关联(返回多条数据,需要判断是否存在目标值),用集合内置方法处理即可:
    // 先把二维集合压平为一维,再判断是否包含目标值
    $hasTargetValue = Auth::user()->InitialStudy()->pluck("result")->flatten()->contains("مؤهل");
    

如果需要用strcmp做精确对比,先取出目标值再操作:

// 压平后取第一个结果值
$firstResult = $checkResult->flatten()->first();
$strcmpResult = strcmp($firstResult, "مؤهل"); // 两个字符串相等时返回0

内容的提问来源于stack exchange,提问作者amnah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 16:09:02