我已经为我的表users
创建了一个数据透视表,courses
.
一个用户可以有许多课程,一个课程可以有很多课程。所以
在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)
可能有什么问题?我做得对吗?
你必须返回关系。此外,还需要将belongsToMany()
用于多对多关系。
public function user(){
return $this->belongsToMany('User');
}
和
public function courses(){
return $this->belongsToMany('Course');
}
⇒ 拉拉维尔文档
你应该使用$user = User::with('courses')->where('id', Auth::id())->first();
wich 会在一行中完成你的代码。
然后,您可以使用$user->courses
作为数组来访问库尔塞。
请注意,Auth::id()
等效于 Auth::user()->id
。
编辑:您应该对课程使用以下功能:
public function user()
{
return ($this->belongsToMany('User'));
}