Не работает belongsToMany (Many to Many)

113
03 декабря 2019, 03:40

Есть pivot-таблица championship_user:

Я получаю данные Championship пользователя User вот так:

public function championships()
    {
        return $this->belongsToMany(Championship::class)->withPivot('skill_id', 'role', 'result');
    }

В контроллере мне нужно получить все Championship пользователя:

$championships = Auth::user()->championships();
        $skills = Skill::all();
        dd($championships);

Вывод dd() такой:

#related: Championship {#236 ▼
    #hidden: []
    #guarded: []
    #connection: "mysql"
    #table: null
    #primaryKey: "id"
    #keyType: "int"
    +incrementing: true
    #with: []
    #withCount: []
    #perPage: 15
    +exists: false
    +wasRecentlyCreated: false
    #attributes: []
    #original: []
    #changes: []
    #casts: []
    #dates: []
    #dateFormat: null
    #appends: []
    #dispatchesEvents: []
    #observables: []
    #relations: []
    #touches: []
    +timestamps: true
    #visible: []
    #fillable: []
  }

Т.е. он не может найти никакие записи, хотя записи есть:

В чем может быть ошибка? Как исправить?

Answer 1

В моем коде была ошибка: $championships = Auth::user()->championships();. Там не должно быть () в конце. Можно было оставить и так, но тогда нужно добавить ->get() вот так: $championships = Auth::user()->championships()->get();. Т.е. мы создаем запрос, но не выполняем его.

READ ALSO
Как задать значения полей по умолчанию в модели eloquent?

Как задать значения полей по умолчанию в модели eloquent?

Есть ли возможность прямо внутри модели App\Post задать значения по умолчанию, например для поля user_id типа:

136
Выбор одного значения из клетки

Выбор одного значения из клетки

Как взять только одно значение из клетки у котороый всего 6 значений?

115
Записывать динамические переменные в mysql

Записывать динамические переменные в mysql

Ребята, помогите, пожалуйста, не могу найти инфо

134