Я пытаюсь получить date_fin_contrat
, срок действия которого истекает через 60 дней.
Поэтому я использую следующую формулу:
date_fin_contrat-60 <= current_date
Итак, в Laravel я использую следующий код:
$contrats_en_cours = Contrat::where('contrats.actif', 1)
->join('projets_castings', 'contrats.id_contrat', '=', 'projets_castings.id_contrat')
->leftjoin('projets', 'projets.id_projet', '=', 'projets_castings.id_projet')
->leftjoin('castings', 'contrats.id_casting', 'castings.id_casting')
->whereDate('contrats.date_fin_contrat', '-', 60, '<=', Carbon::today())
->get();
Например: Текущая дата 09-08-2021
и date_fin_contrat
09-10-2021
Я должен получить эту строку.
Но я ничего не получаю, что-то не так с моим запросом?
Если у вас есть идеи, пожалуйста, помогите.
Прежде всего, пожалуйста, ИЗБЕГАЙТЕ использования большого количества
joins
, это полностью разрешимо с помощью отношений... например,Contract::where('actif', true)->projets()->castings()->get()
. Вам все равно нужно добавить условиеwhere
для контракта, но все равно это будет более читабельно.