Laravel Можно из консоли запустить контрол который выводит отчет?

mstdmstd

Новичок
Всем привет
А можно ли в laravel 5.7 из консоли запустить контрол который выводит отчет?
То есть кроном запучкается консольная команда
Код:
php artisan report:available-spaces-by-zones
Сама команда app/Console/Commands/reportAvailableSpacesByZones.php :
PHP:
<?php
namespace App\Console\Commands;

use Illuminate\Console\Command;
use Carbon\Carbon;
use App\library\AvailableSpacesByZonesReport;

class reportAvailableSpacesByZones extends Command
{
    protected $signature = 'report:available-spaces-by-zones';
    protected $description = 'With this command available-spaces-by-zones report will be sent daily';
    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        \Log::info( 'Report From inside app/Console/Commands/reportAvailableSpacesByZones.php run # ' . time()  );// Сообщения в лог добавляются
        return redirect()->to('/admin/report/available-spaces-by-zones/send-email-on-open');// ОТЧЕТ НЕ ВЫПОЛНЯЕТСЯ
    }

}

Если запустить в браузер урл
/admin/report/available-spaces-by-zones/send-email-on-open
То рендится отчет и отправляется на мейл

Но редирект выше не работает и похоже не запускается совсем нет нет логов запуска котнрола.
А как правильно?


2) Мелькнула мысль переделать отчет в обьекте с blade-темплейтом отдельно и вызывать его как в контроле так и в консольной команде.

Есть ли что в laravel 5.7 удобное для этого ?
Как лучше сделать?

Спасибо!
 

mstdmstd

Новичок
Наверно, проблема в том, что в браузере зайти на /admin/report/available-spaces-by-zones/send-email-on-open
может только залонившейся в систему юзер? Можно ли из консоли запустить такой урл?
Или надо переделать на урл без ограничения доступа?
 

vptrv.pr

Новичок
Почему не сделать вот так
<?php
namespace App\Console\Commands;

use Illuminate\Console\Command;
use Carbon\Carbon;
use App\library\AvailableSpacesByZonesReport;

class reportAvailableSpacesByZones extends Command
{
protected $signature = 'report:available-spaces-by-zones';
protected $description = 'With this command available-spaces-by-zones report will be sent daily';
public function __construct()
{
parent::__construct();
}

public function handle(reportAvailableSpacesByZones $reportAvailableSpacesByZones)
{
$reportAvailableSpacesByZones->start()
}

}


class reportAvailableSpacesByZones{
public function start(){
/**
/*Формируется отчет
*/
}
}
 
Сверху