Laravel, конец миграционных отношений через некоторое время - PullRequest
0 голосов
/ 21 февраля 2020

привет, у меня следующий вопрос. В laravel я создал 2 стола, квартиры и спонсоров со многими отношениями. В зависимости от выбранного плана у спонсоров есть переменная продолжительность, которую я оценил в сводной таблице (start_time и end_time). Мне нужно, чтобы отношения между квартирой и спонсором заканчивались автоматически после окончания периода спонсорства (когда дата и день совпадают с временем окончания сводной таблицы). Как я мог сделать такую ​​вещь? Я думал об использовании detach, но я не уверен, как.

1 Ответ

0 голосов
/ 21 февраля 2020

Всегда полезно смотреть на эти проблемы с разных точек зрения. Как упоминалось в двух комментариях, вы можете использовать Планирование заданий В windows или задания cron в linux системах. Следующий вариант - создать еще одно поле в вашей сводной области, которое будет похоже на «активное». Так что это будет логическое значение и всегда будет возвращать true или false. Теперь вы можете комбинировать планирование задач и использовать собственную команду ремесленника, вы можете продолжать проверять, истек ли срок действия спонсора, и, если он истек, установите для активного поля значение false. И в довершение всего, когда вы получите свои данные, просто отфильтруйте свой запрос. Я не знаю, как выглядит ваш код, но вот пример кода сводной таблицы и как я бы отфильтровал его (не проверял):

//Here active null assumes it is false value. Active 1 assumes it is true. So the active field will be nullable
$myQuery = Sponsor::with([‘apartments’ => function($q) {
$q->where(‘active’, null)->get();
}])->get();
//The apartments is assumed to be the pivot relationship in your sponspor model

Это всего лишь простой пример того, как вы могли бы цепочки и запрашивать отношения, будь то сводная таблица или любая другая таблица, вы можете выполнять пользовательские запросы в рамках, как указано выше. Что-то вроде этого должно работать в вашем случае

...