Консультации реестров в подмостках многие во многие с laravel

Как он сделал бы, в момент шарнир laravel консультирует реестры двух связанных подмостков (многие во многие) посредством таблицы?

Я стараюсь делать это с Joins, но мне не удается встретить того, что я хочу. Подмостки:

user
role_user
roles
0
задан 02.05.2017, 18:08
1 ответ

Принимая, что связи были хорошо определены в моделях, только ты должен делать:

$user->role;

В документации объясняется во всех деталях это: https://laravel.com/docs/5.3/eloquent-relationships#many-to-many

Идеальное состояло бы в том, чтобы твои подмостки назвались users (с s в конце концов), roles и role_user, который дебет содержать user_id и role_id.

Отсюда в дальнейшем конфигурировать модели - очень просто:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * The roles that belong to the user.
     */
    public function roles()
    {
        return $this->belongsToMany('App\Role');
    }
}

Role:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
    /**
     * The users that belong to the role.
     */
    public function users()
    {
        return $this->belongsToMany('App\User');
    }
}

Редактирование:

Быстрый пример, чтобы показывать пользователи с Вашими списками:

Драйвер

public function index()
{
    $users = User::all();

    return view('users.list', compact('users'));
}

Вид

@foreach($users as $user)
    Usuario: {{ $user->name }} Rol: {{ $user->role->role_name }}
@endofeach

Очевидно имена свойств меняются. Я рекомендую тебе читать, как функционируют связи в Laravel: https://laravel.com/docs/5.3/eloquent-relationships

1
ответ дан 24.11.2019, 12:05
  • 1
    У меня есть модели, такой который ты они показываешь, и они идут в волосы. Только он запутывает меня немного в момент того, чтобы приносить реестры. Я делаю llamdo $users = User:: find (1)-> списки ()-> orderBy (' id')-> get (); Но только меня возвращает ямс списка и мне нужно, чтобы также возвратился реестр пользователя... – Erain Moya 14.12.2016, 18:14
  • 2
    Я не понимаю для того, чтобы ты хочешь сделать это, está s делая query в relació n полностью ненужный, если ты обращаешь внимание в начало ответа, он говорит $user->role, это все то, во что ты нуждаешься, я думаю, что ты не понял хорошо, как функционируют связи в Laravel, для чего я предлагаю тебе читать хорошо Ваш documentació n, так как уже está n предзагруженные. – Shaz 14.12.2016, 18:17
  • 3
    Я умираю, но когда я делаю так называемого ($ user-> role;) с драйвера, меня производит ошибка неопределенной переменной. – Erain Moya 14.12.2016, 19:32
  • 4
    ¿ Está s определяя $user раньше? Того, чтобы быть утвердительным, тогда вероятно está плохо определенная relació n, ¿ ты проверил, что имена подмостков и полей совпали? это очень важно и обычно люди ошибаются ahí забыв или поместив одну s má в. – Shaz 14.12.2016, 19:35
  • 5
    Чтобы видеть, этот фрагмент драйвера, где я делаю так называемого. public function index () { $roles = Role:: orderBy (' id' ' ASC')-> get ();//$users = User:: find (1)-> списки ()-> orderBy (' id')-> get (); $ user-> role;//dd ($users); return view (' users.users' compact (' roles' ' user')); } – Erain Moya 14.12.2016, 20:09