【发布时间】:2019-08-31 01:31:20
【问题描述】:
我有一个多态关系,其中类(请求)可以与类(离开)或类(加班)有关系。
类 (Request) 的每个对象都属于一个用户。
我想在 User 类中建立一个关系来直接获取他们所有的 Leave 或 Overtime 对象。
代码如下:
- 类请求:
- user_id
- requestable_id
- requestable_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;
【问题讨论】:
-
hasManyThrough 关系是您正在寻找的吗? laravel.com/docs/5.8/eloquent-relationships#has-many-through。或者你可以使用 ->hasMany()->where();
-
你能试一试吗?我认为它不适用于多态关系
标签: php laravel eloquent polymorphism