私は学生、教師、...が資格情報を使用してログインできる学校のプラットフォームを作成しています。重複データを減らすため、studentsという別のテーブルを作成せず、すべてのデータをusersテーブルに保存しました。サブタイプの雄弁なモデルを作成
ユーザーが学生かどうかを知るには、登録と呼ばれる表があります。この表には、user_id
,schoolyear_id
およびclass_id
が格納されています。
私はすでにユーザーテーブルを参照している学生モデルを作成しましたが、このモデルが学生にのみ通るようにするにはどうすればよいですか?
Student.php:
<?php
namespace App;
class Student extends User
{
protected $table= 'users';
public function enrollments(){
return $this->belongsToMany(Enrollment::class);
}
}
User.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();
関数を呼び出すとき、私はすべてを得るということです学校に登録しているユーザー、つまり学生。