我正在尝试构建一个具有过期日期的设备的应用程序: 必须使用其他2个表中的值创建过期日期:历史记录(最后日期)和模型(间隔)
我已经在我的设备模型中创建了以下范围:
public function scopeExpiryDate($query, $operator) {
if ($this->histories->last() != null) {
$cal_date = $this->histories->sortBy('date')->last()->date;
$interval = $this->product->interval;
return $query->where($cal_date->addDays($interval), $operator, Carbon::now());
}
return $query;
}
然后我可以使用下一行:
$devices->ExpiryDate('<=')->get();
那我怎么使这个示波器起作用?
答案 0 :(得分:0)
假设$cal_date
是一个Carbon\Carbon
实例,则可以使用以下查询:
$query->whereDate($cal_date->addDays($interval), $operator, Carbon::now());
有关更多信息,请参见有关日期过滤here
的精彩教程答案 1 :(得分:0)
好的,我找到了解决方案。在作用域中找不到它,但是在添加属性时没有找到它。 我在“设备”模型中做了以下操作:
public function getExpirydateAttribute() {
if ($this->histories->last() != null) {
$cal_date = $this->histories->sortBy('date')->last()->date;
$interval = $this->product->interval;
return $cal_date->addDays($interval);
}
return Carbon::now();
}
在我看来,我可以这样称呼:
$devices->filter(function($item){ return $item->Expirydate > now()->modify('last day of this month'); })->count()
感谢回答我问题的人。