我有两个表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 }}