Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 26.08.2017 16:21:21

Relationships Eloquent

Объясните пожалуйста как нужно сделать в моем случе

Есть таблица Users (id,name,email,...)
Есть таблица Roles (1=>Admin,2=>Guest,...)
Есть таблица Role_users (user_1d=>role_id)

Как мне обратиться к role_id
Когда у меня есть юзер
$user = User::find($activation->user_id);

Я создал Модель Role_user
И в модели User написал следующее
public function role_user()
{
  return $this->hasOne('App\Role_user');
}
Но я не получил однозначного ответа а только вот этот стек
HasOne {#94 ▼
  #foreignKey: "role_users.user_id"
  #localKey: "id"
  #query: Builder {#279 ▶}
  #parent: User {#280 ▶}
  #related: Role_user {#273 ▼
    #connection: "mysql"
    #table: null
    #primaryKey: "id"
    #keyType: "int"
    +incrementing: true
    #with: []
    #withCount: []
    #perPage: 15
    +exists: false
    +wasRecentlyCreated: false
    #attributes: []
    #original: []
    #casts: []
    #dates: []
    #dateFormat: null
    #appends: []
    #events: []
    #observables: []
    #relations: []
    #touches: []
    +timestamps: true
    #hidden: []
    #visible: []
    #fillable: []
    #guarded: array:1 [▶]
  }
  #withDefault: null
}

А хочется написать $user->role_id И получить значение smile

Изменено imediasun (26.08.2017 16:54:44)

Не в сети

#2 26.08.2017 16:57:13

Re: Relationships Eloquent

$user->role_user->role_id
Ингогда надо спросить у самого себя чтобы понять smile
Может другие методы кому известны быстрее и проще?

Изменено imediasun (26.08.2017 17:00:56)

Не в сети

#3 26.08.2017 19:43:56

Re: Relationships Eloquent

всё перепутал. судя по описанию структуры базы у тебя должно быть две модели: User и Role, связанные между собой отношением многие-ко-многим (->belongsToMany()) через пивот-таблицу role_user (для неё модели создавать не нужно). если у пользователя может быть только одна роль, пивот-таблица не нужна, достаточно поля role_id на users, в этом случае у пользователя будет связь role() { return $this->belongsTo(Role::class); } а у ролей для получения пользователей с этой ролью будет связь users() { return $this->hasMany(User::class); }

Не в сети

Подвал раздела