Php Laravel中的透视表选择
我已经为我的表Php Laravel中的透视表选择,php,sql,laravel,laravel-4,Php,Sql,Laravel,Laravel 4,我已经为我的表用户和课程创建了一个透视表 一个用户可以有许多课程,一个课程可以有许多课程。所以 在Course.php中 public function user(){ return $this->hasMany('User'); } public function courses(){ return $this->hasMany('Course'); } 在User.php public function user(){ retu
用户
和课程
创建了一个透视表
一个用户可以有许多课程,一个课程可以有许多课程。所以
在Course.php中
public function user(){
return $this->hasMany('User');
}
public function courses(){
return $this->hasMany('Course');
}
在User.php
public function user(){
return $this->hasMany('User');
}
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)
有什么问题吗?我做得对吗?你必须回报这段关系。此外,还需要对多对多关系使用
belongtomany()
public function user(){
return $this->belongsToMany('User');
}
及
您应该使用
$user=user::with('courses')->where('id',Auth::id())->first()代码>它将在一行中完成您的代码
然后您可以使用$user->courses
作为数组来访问课程
请注意,Auth::id()
相当于Auth::user()->id
编辑:您应该对课程使用以下功能:
public function user()
{
return ($this->belongsToMany('User'));
}
我仍然收到一个错误,SQLSTATE[42S22]:未找到列:1054 Champ'courses.user\u id在where子句中未知(SQL:select*from``where courses
courses
user\u id`=3)`您能重新格式化错误消息或将其添加到您的问题中吗?这样读起来有点难。引用user.id的外键叫做user\u id
?dd($users)返回数组(size=3)和其他细节。好的。把所有的菜都拿来?(我真的被select*from''
激怒了,感觉这就是问题所在)SQLSTATE[42S02]:找不到基表或视图:1146表“learningnew.user\u user”不存在(SQL:从“用户”内部选择*users
,`作为用户
用户id
pivot\u用户id`。``我们在(3)中加入用户`用户`用户`
id`=`Where user\u用户用户id`用户`用户`
用户id`)您必须使用我在您的课程类中发布的函数,并且不要更改您的用户类中的函数。如果不清楚,很抱歉。我这样做了。出现了以下错误:SQLSTATE[42S22]:未找到列:1054 Champ'courses.User\u id在where子句中未知(SQL:select*from``where courses`courses
User\u id`in(3))