Laravel 不能在使用 belongsToMangy 连接的表上使用 where

Posted

技术标签:

【中文标题】Laravel 不能在使用 belongsToMangy 连接的表上使用 where【英文标题】:Laravel cannot use where on a table connected using belongsToMangy 【发布时间】:2021-06-19 23:59:41 【问题描述】:

我有以下模型文件,它与 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 的用户,它也会返回空结果集。谁能告诉我这里有什么问题?

【问题讨论】:

【参考方案1】:

users 更改为users()

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

【讨论】:

以上是关于Laravel 不能在使用 belongsToMangy 连接的表上使用 where的主要内容,如果未能解决你的问题,请参考以下文章

不能在 Laravel 8 中使用遗留工厂

Vue组件在laravel中不能使用scss

Laravel 5.1 不能在集合上使用 @foreach

Laravel 不能在使用 belongsToMangy 连接的表上使用 where

Laravel5、PHPUnit 和 Date Mutators:不能在数据提供者中使用 mutator

为啥我不能使用 PHP artisan serve 运行我的 laravel 应用程序?