3 回答

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個贊
我認(rèn)為最直接的方法是使用數(shù)據(jù)透視模型基于數(shù)據(jù)透視表建立獨(dú)立關(guān)系:
class ShiftEmployee extends Pivot
{
protected $table='shift_employee';
}
現(xiàn)在是 Shift 模型中的新關(guān)系:
class Shift extends Model
{
public function shortlistedApplications()
{
return $this->hasMany(ShiftEmployee::class,'shift_id');
}
public function scopeWithShortlistedApplications($query)
{
$query->with('shortlistedApplications:shift_id,shortlisted');
}
}
現(xiàn)在這個新范圍將帶來你想要的數(shù)據(jù)

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個贊
我認(rèn)為你需要的是只加載shortlisted你的員工應(yīng)用程序的屬性scopeWithApllications:
public function scopeWithApplications($query)
{
$query->with('applications.application:id,shortlisted');
}
這仍然會返回一個Application實(shí)例作為關(guān)系,但只會加載它的shortlisted屬性。然后,在檢索之后,您可以映射您的集合,以便將應(yīng)用程序的屬性合并到您的員工(如果這真的很重要)。但就數(shù)據(jù)短缺而言,這可以解決問題。

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個贊
在您的應(yīng)用程序模型中使用 withPivot 方法。像這樣:
public function applications(){
return $this->belongsToMany('App\Application')
? ? ->withPivot('shortlisted')
? ? ->withTimestamps();}
- 3 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)