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

Laravel Eloquent多对多关联报Array to string conversion错误 无法查询用户投递职位

报错原因

报错直接诱因是你给Applies模型设置了数组类型的$primaryKey,Laravel原生要求模型主键为字符串类型的单字段,处理关联逻辑时调用mb_strpos处理主键参数时收到数组,就触发了该错误。同时你的多对多关联定义、业务逻辑匹配也存在错误,按以下步骤修复即可:


修复步骤

  1. 移除不必要的Applies中间表模型
    多对多关联场景下不需要单独为中间表创建模型,直接删除Applies模型即可避免主键类型错误,如果确实需要保留中间表模型做其他业务,可以给applies表新增一个自增单字段主键id,再把Applies模型的$primaryKey修改为'id'即可消除报错。

  2. 修正关联定义
    你的需求是查询指定用户投递的所有职位,属于用户和职位的多对多关联,关联需要定义在用户模型(对应你user_info表的模型,假设为User,如果你的用户模型是Info则对应修改即可)中:

// 注意核对中间表外键名:你表结构中标注applies表用户外键为users_id,如果实际是user_id请同步修改第三个参数
public function appliedPosts()
{
    return $this->belongsToMany(Post::class, 'applies', 'users_id', 'posts_id');
}

如果需要反向查询某个职位收到的所有投递用户,可以在Post模型中补充关联:

public function applicants()
{
    return $this->belongsToMany(User::class, 'applies', 'posts_id', 'users_id');
}
  1. 控制器查询逻辑调整
public function index()
{
    // 直接获取当前登录用户投递的所有职位
    $appliedPosts = Auth::user()->appliedPosts;
    // 打印验证结果
    dd($appliedPosts);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:08