Laravel. Построение таблицы на основе других
Структура БД: https://dbdiagram.io/d/646682a6dca9fb07c459c154 Хочу создать команду для отработки 1 числа каждого месяца. На данный момент у меня получилось забрать данные только через связи от клиента к услугам. Вкратце, формируется айди клиента и общая сумма по всем договорам и услугам к ним, к примеру: клиент 1 имеет счет №1 на сумму 60 000 руб. за 05 месяц. \app\Console\Commands:
public function handle()
{
$clients = Client::get();
foreach ($clients as $client) {
foreach ($client->with('agreement')->get() as $client_agreement) {
foreach ($client_agreement->agreement as $agreement) {
foreach ($agreement->with('service')->get() as $agreement_service) {
foreach ($agreement_service->service as $service) {
// DB::table('bills')->insert([
// 'client_id' => $client->id,
// 'name' => $client->agreement->service->name,
// 'price' => $client->agreement->service->price * $client->agreement->service->count
// ]);
$this->info($service->name);
}
}
}
}
}
return 0;
}
Я понимаю, что чушь написал, просто тестировал таким образом обращение. Проблема в том, что доступ модель клиента $clients->agreement->service к услугам не имеет, только договора, а как мне тогда получить необходимую информацию? Еще момент, что если договор создан 30 числа, счет приходит за этот месяц только для 1 дня, если в месяце 31 день, тогда сумма услуг / 31 * 2, что будет соответствовать цене услуги за 2 дня, далее проверяется за какой месяц выставляется, следующий будет иметь полную стоимость и так далее. Но это я думаю не сложно будет через карбон решить, а вот как вытянуть правильно данные пока что в голову не дошло...