2014-12-15 3 views
2

Я создал сводную таблицу для моего стола users и courses.Сводная таблица выберите в Laravel

У пользователя может быть много курсов, и курс может иметь много курсов. Так,

В Course.php

public function user(){ 
     return $this->hasMany('User'); 
    } 

и User.php

public function courses(){ 
    return $this->hasMany('Course'); 
} 

Когда я попытался вызвать следующий запрос, появляется сообщение об ошибке.

$user = User::where('id', Auth::user()->id)->first(); 
$courses = $user->courses->get(); 


Ошибка:

SQLSTATE [42S22]: Column not found: 1054 Champ 'courses.user_id unknown in where clause (SQL: select * from `` Where courses` courses`.`user_id` = 3) 

Что может быть проблема? Правильно ли я это делаю?

ответ

1

У вас должно быть возвращение отношения. Также вам нужно использовать belongsToMany() для отношений «многие ко многим».

public function user(){ 
    return $this->belongsToMany('User'); 
} 

и

public function courses(){ 
    return $this->belongsToMany('Course'); 
} 

⇒ Laravel Docs

+0

Я получаю сообщение об ошибке еще тогда 'SQLSTATE [42S22]: Column не найдено: 1054 Champ«courses.user_id неизвестный в where clause (SQL: select * from '' Where courses' courses'.'user_id' = 3) ' – user1012181

+0

Можете ли вы, пожалуйста, переформатировать сообщение об ошибке или добавить его в свой вопрос? Трудно это читать. – lukasgeiter

+0

в порядке, сделаю это сейчас. – user1012181

0

Вы должны использовать $user = User::with('courses')->where('id', Auth::id())->first(); Wich бы сделать свой код в одной строке.

Тогда вы можете использовать $user->courses как массив для доступа к курсам.

Отметьте, что Auth::id() является эквивалентом Auth::user()->id.

EDIT: Вы должны использовать следующую функцию для курсов:

public function user() 
{ 
    return ($this->belongsToMany('User')); 
} 
+0

Такая же ошибка! – user1012181

+0

Отредактировал мой ответ. – AntoineB

+0

SQLSTATE [42S02]: Базовая таблица или просмотр не найдены: 1146 Таблица 'learningnew.user_user' не существует (SQL: выберите * 'users',' 'as user_user'''er_id' pivot_user_id' из' user' inner. ' 'мы присоединяемся к пользователям user_user''''''' 'Где user_user'.'user_id' user_user'.'user_id' в (3)) – user1012181

Смежные вопросы