3 回答
TA贡献1951条经验 获得超3个赞
我认为最直接的方法是使用数据透视模型基于数据透视表建立独立关系:
class ShiftEmployee extends Pivot
{
protected $table='shift_employee';
}
现在是 Shift 模型中的新关系:
class Shift extends Model
{
public function shortlistedApplications()
{
return $this->hasMany(ShiftEmployee::class,'shift_id');
}
public function scopeWithShortlistedApplications($query)
{
$query->with('shortlistedApplications:shift_id,shortlisted');
}
}
现在这个新范围将带来你想要的数据
TA贡献1890条经验 获得超9个赞
我认为你需要的是只加载shortlisted你的员工应用程序的属性scopeWithApllications:
public function scopeWithApplications($query)
{
$query->with('applications.application:id,shortlisted');
}
这仍然会返回一个Application实例作为关系,但只会加载它的shortlisted属性。然后,在检索之后,您可以映射您的集合,以便将应用程序的属性合并到您的员工(如果这真的很重要)。但就数据短缺而言,这可以解决问题。
TA贡献1798条经验 获得超3个赞
在您的应用程序模型中使用 withPivot 方法。像这样:
public function applications(){
return $this->belongsToMany('App\Application')
->withPivot('shortlisted')
->withTimestamps();}
- 3 回答
- 0 关注
- 139 浏览
添加回答
举报