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

Laravel报stdClass无法转字符串错误 如何匹配两表同occupation的用户ID

报错原因

Object of class stdClass could not be converted to string 报错的核心是你调用get()方法获取到的是包含stdClass对象的结果集合,不是单个occupation字段的字符串值,直接将其传入where条件时,框架无法将对象转为字符串进行匹配,因此触发报错。

另外你的代码还有两处逻辑问题:

  • 主键id是精确匹配场景,不需要使用like模糊查询
  • get()方法适用于获取多条结果,你只需要取单个字段值,不需要用该方法
修正后的可运行代码
public function match(){
    $id = Auth::id();
    // 直接从preferences表取出对应用户的occupation字符串值
    $target_occupation = DB::table('preferences')->where('id', $id)->value('occupation');
    
    // 判空避免preferences无对应数据时查询异常
    if (empty($target_occupation)) {
        return [];
    }
    
    // 匹配user_more_infos表中occupation相同的用户id
    $matched_user_ids = DB::table('user_more_infos')->where('occupation', $target_occupation)->select('id')->get();
    return $matched_user_ids;
}
代码说明
  • value('occupation') 方法会直接返回查询结果第一条对应字段的原始值,不需要你再从对象/集合里手动取属性
  • 精确匹配场景下直接用where('字段', 值)即可,不需要调用like,只有模糊搜索时才需要用到like搭配%通配符
  • 增加了空值判断,避免preferences表中没有对应用户数据时,后续匹配查询出现逻辑错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:39:03