在拉拉维尔中选择数据透视表


Pivot table select in Laravel

我已经为我的表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'));
}