Трудности с областью в Laravel - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь создать приложение, в котором есть устройство с датой истечения срока действия: дата окончания срока действия должна быть создана со значениями из 2 других таблиц: история (последняя дата) и модель (интервал)

IСоздаю следующую область в моей модели устройства :

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();

Обновление

как@ceejayoz сказал в комментариях, что я проверил раздел областей действия на сайте Laravel.Я редактировал этот вопрос.

Так, как мне заставить эту область работать?

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Хорошо, я нашел решение.Он не был найден в областях, но при добавлении атрибута.Я сделал следующее в моей модели устройства:

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()

Спасибо людям, которые ответили на мой вопрос.

0 голосов
/ 22 декабря 2018

Предполагая, что $cal_date является экземпляром Carbon\Carbon, вы можете использовать этот запрос:

$query->whereDate($cal_date->addDays($interval), $operator, Carbon::now());

Для получения дополнительной информации, есть отличный учебник по фильтрации даты здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...