如何从多对多Eloquent关系中检索数据


How to retrieve data from many to many Eloquent Relationships

我有两个表1.课程2.用户.

用户可以从课程列表中选择课程,并使用他的实体保存他的用户信息。现在管理员可以检查用户详细信息。所以,我想在那里显示一个用户详细信息页面。但它不是

这是用户模型:

<?php
namespace App;
use Illuminate'Foundation'Auth'User as Authenticatable;
class User extends Authenticatable
{
    protected $table='users';
     protected $fillable=['name','email','phone','course_id'];
    public function roles()
    {
        return $this->belongsToMany('App'Role', 'user_role', 'user_id', 'role_id');
    }
    public function hasAnyRole($roles)
    {
        if (is_array($roles)) {
            foreach ($roles as $role) {
                if ($this->hasRole($role)) {
                    return true;
                }
            }
        } else {
            if ($this->hasRole($roles)) {
                return true;
            }
        }
        return false;
    }
    public function hasRole($role)
    {
        if ($this->roles()->where('name', $role)->first()) {
            return true;
        }
        return false;
    }
    public function course()
    {
        return $this->hasMany('App'Course');
    }
}

这是课程模型:

<?php
namespace App;
use Illuminate'Database'Eloquent'Model;
class Course extends Model
{
    protected $table='courses';
    protected $fillable = ['name'];
      public function user()
    {
        return $this->belongsToMany('App'User','course_id');
    }
}

这是控制器:

<?php
namespace App'Http'Controllers;
use App'User;
use App'Role;
use App'Fee;
use App'Course;
use Illuminate'Support'Facades'Input;
use Illuminate'Http'Request;
class AppController extends Controller
{
    public function getStudentDetails(){
        // $user = User::all();
        $user = 'DB::table('users')->where('course_id','!=',0) ->get(); 
         return view('studentDetails', compact('user'));
    }
}

我必须只显示那些从列表中选择课程的用户数据。我该怎么做?

在控制器中获取用户数据:

$user=User::with('courses')->first();

在视图中,检查用户是否有课程,在tr之前,在tbody中使用此条件

<tbody>
@foreach($user as $row)
@if($row->courses)<tr><td></td></tr>
@endif
@endforeach
</tbody>

然后使用此代码访问课程名称

{{ $row->courses->name }}