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

时间:2016-04-12 02:07:00

标签: php laravel laravel-5.2

我有两张桌子 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'));
    }
}

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

1 个答案:

答案 0 :(得分:2)

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

$config['base_url']   = APP_HOST;

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

import {Pipe, PipeTransform} from "angular2/core";
import {DateFormatter} from 'angular2/src/facade/intl';

@Pipe({
    name: 'dateFormat'
})
export class DateFormat implements PipeTransform {
    transform(value: any, args: string[]): any {
        if (value) {
            var date = value instanceof Date ? value : new Date(value);
            return DateFormatter.format(date, 'pt', 'dd/MM/yyyy');
        }
    }
}

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

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