Laravel通过关系的枢轴条件得到模型

时间:2017-09-25 15:13:05

标签: php laravel pivot laravel-eloquent laravel-5.5

我需要获得所有appealsappeal_stage.expiration_date小于NOW()

enter image description here

现在我有以下解决方案:

public function scopeExpired($query) {
    $query->join('appeal_stage', 'appeals.id', 'appeal_stage.appeal_id')
        ->where('appeal_stage.expiration_date', '<=', new Expression('NOW()'));
}

但是结果模型转储显示连接表被识别为数据透视表: enter image description here

所以,我想问一下 - 是否有更方便的方式来执行此请求? 我的建议是以某种方式使用Illuminate\Database\Eloquent\Relations\Pivot,我不明白,如何在这里使用Pivot。

UPD 1

模型有下一个关系:

public function stages()
{
    return $this->belongsToMany(Stage::class)->withPivot('prolongated_count', 'expiration_date')->withTimestamps();
}

public function appeals() {
    return $this->belongsToMany(Appeal::class);
}

2 个答案:

答案 0 :(得分:2)

你应该可以这样做:

[].slice.call(document.querySelectorAll('.dropdown .nav-link')).forEach(function(el){
    el.addEventListener('click', onClick, false);
});

答案 1 :(得分:2)

您应该在appeal模型

中创建关系
public function stages()
{
   return $this->belongsToMany(Stage::class,'appeal_stage','appeal_id','stage_id')->wherePivot('expiration_date','<',Carbon::now())->withTimestamps();
}

在属于多个关系中,第二个参数是您的Pivot表名