首页 > 解决方案 > 在laravel eloquent中使用belongsToMany时,集合中不存在属性

问题描述

我正在使用 Laravel 8.X 和 eloquent 开发一个网络应用程序。

我有一个数据透视表“portal_event_users”

在此处输入图像描述

我正在尝试portal_users 在表模型中添加一个 belongsToMany 关系portal_event_users

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class EventUser extends Model
{
    use HasFactory;
    protected $table = 'portal_event_users';
    
      public function users()
    {
        return $this->belongsToMany(User::class);
    }
    
    public function events()
    {
        return $this->belongsToMany(Event::class);
    }
}

我在控制器中有以下语句

$eventusersobj = \App\Models\EventUser::select('*')
                                    ->where('event_id', '=', $event_id)
                                    ->get();
                    
                    $response =  $eventusersobj->users->keyBy('id');

它返回以下错误

此集合实例上不存在属性 [users]。

有人可以建议我如何更改此错误吗?

提前致谢

标签: laraveleloquent

解决方案


作为返回集合,您可以使用pluck()

$eventusersobj->pluck('users')->each(function($user){
    $user->keyBy('id');
})

推荐阅读