【发布时间】:2017-11-22 12:52:46
【问题描述】:
我正在创建一个学校平台,学生、教师……可以使用他们的凭据登录。为了减少重复数据,我没有单独创建一个名为 students 的表,而是将所有数据保存在 users 表中。
要知道用户是否是学生,我有一个名为 enrolments 的表,在此表中存储了 user_id、schoolyear_id 和 class_id。
我已经做了一个引用 users 表的学生模型,但是如何确保这个模型只通过学生?
学生.php:
<?php
namespace App;
class Student extends User
{
protected $table= 'users';
public function enrollments(){
return $this->belongsToMany(Enrollment::class);
}
}
用户.php:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
use Illuminate\Support\Facades\Auth;
class User extends Authenticatable
{
use Notifiable;
use HasRoles;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'first_name','last_name', 'password'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function profiles(){
return $this->hasOne(Profile::class);
}
}
我想要实现的是,当我调用Student::all(); 函数时,我得到所有在学校注册的用户,因此是学生。
【问题讨论】:
标签: php laravel eloquent laravel-5.5