У меня есть полиморфное отношение, в котором класс (Request) может иметь отношение либо с классом (Leave), либо с классом (Overtime).
Каждый объект класса (Request) принадлежит пользователю.
Я хотел бы установить отношение в классе User для прямого получения всех своих объектов Leave или Overtime.
Вот как выглядит код:
- Запрос класса с:
- user_id
- requesttable_id
- requesttable_type может быть App \ Leave или App \ Overtime
class Request extends Model
{
public function requestable() {
return $this->morphTo();
}
public function user() {
return $this->belongsTo('App\User');
}
}
class Leave extends Model
{
public function request() {
return $this->morphOne('App\Request', 'requestable');
}
}
class Overtime extends Model
{
public function request() {
return $this->morphOne('App\Request', 'requestable');
}
}
class User extends Authenticatable
{
public function requests() {
return $this->hasMany(Request::class);
}
public function leaves() {
// Need help here
}
public function overtimes() {
// And here
}
}
То, что я хотел бы сделать, это получить все отпуска и сверхурочные, которые есть у пользователя, поэтому в конечном итоге я смогу сделать это:
$userLeaves = $user->leaves;
$userOvertimes = $user->overtimes;