首页 > 解决方案 > Laravel 不能在使用 belongsToMangy 连接的表上使用 where

问题描述

我有以下模型文件,它与 portal_users 表有 belongsToMany 关系。

class Role extends Model
{
    use HasFactory;
    protected $table = 'portal_roles';
    
    protected $hidden = array('created_at', 'updated_at','deleted_at');
    
    public function users()
    {
    return $this->belongsToMany(User::class, 'portal_user_roles');
    }
}

我正在尝试使用以下查询查找适合特定角色的所有用户的详细信息

$recordobj = Role::find(15)->users->where('firstname', 'like', '%' . $searchstring . '%')->get()->keyBy('id');

即使有角色 id 为 15 的用户,它也会返回空结果集。谁能告诉我这里有什么问题?

标签: laraveleloquenteloquent-relationship

解决方案


更改usersusers()

$recordobj = Role::find(15)->users()->where('firstname', 'like', '%' . $searchstring . '%')->get()->keyBy('id');

推荐阅读