我为表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)
可能是什么问题?我做得对吗?
答案 0 :(得分:1)
您必须返回这段关系。此外,您需要使用belongsToMany()
来实现多对多关系。
public function user(){
return $this->belongsToMany('User');
}
和
public function courses(){
return $this->belongsToMany('Course');
}
答案 1 :(得分:0)
你应该使用$user = User::with('courses')->where('id', Auth::id())->first();
来代替你的代码。
然后你可以使用$user->courses
作为数组来访问cources。
请注意,Auth::id()
相当于Auth::user()->id
。
编辑:你应该在课程中使用以下功能:
public function user()
{
return ($this->belongsToMany('User'));
}