Метод Laravel BelongsToMany ничего не возвращает - PullRequest
0 голосов
/ 11 мая 2018

Я реализую отношения многие ко многим в Laravel. Объектами являются: users roles и сводная таблица user_role

Users
====
id
name
.....

roles
====
id
role
...

   user_role
   ======
   userId
   roleId

Пытался разными способами получить roles из user, но пока не повезло. Есть идеи?

Последняя попытка:

/**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function roles()
    {
        return $this->belongsToMany(Role::class, 'user_role', 'userId', 'roleId');
    }

Токовый выход на Laravel Tinker:

>>> $user->roles()
=> Illuminate\Database\Eloquent\Relations\BelongsToMany {#2380
     +withTimestamps: false,

1 Ответ

0 голосов
/ 11 мая 2018

$user->roles() это просто запрос для отношения, он не выполняется

Вы можете использовать

$user->roles

если вам не нужно добавлять дополнительные условия или

$user->roles()->where(your conditions)->get()

для более сложного запроса отношения.

Ключевым отличием является использование фарентеза: ->roles против ->roles(). Первый возвращает результат запроса, второй - сам запрос

...