Я пытаюсь узнать очередь базы данных laravel из ее официальной документации. Я сделал конфигурацию, указанную в документации.Laravel 5.1 Нет результатов запроса для модели в очереди
Вот мои работы:
<?php
namespace App\Jobs;
use App\SearchLog;
use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldQueue;
class SendTicket extends Job implements SelfHandling, ShouldQueue
{
use InteractsWithQueue, SerializesModels;
protected $log;
protected $searchLog = array();
public function __construct(SearchLog $log , $data = array())
{
$this->log = $log;
$this->searchLog = $data;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$this->log->create($this->searchLog);
}
В моем контроллере я называю как этот
public function store(Request $request)
{
$searchLog = array();
// searchLog contains the data to be inserted into database
$log = new SearchLog();
$this->dispatch(new SendTicket($log , $searchLog));
}
Когда я бегу php artisan queue:listen
я получаю сообщение об ошибке, как
[Осветите \ Database \ Eloquent \ ModelNotFoundException] Нет запросов Результаты для модели [App \ SearchLog].
Но когда я редактирую работу как этот
//only edited code
public function __construct($data = array())
{
$this->searchLog = $data;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
SearchLog::create($this->searchLog);
}
И когда вызов от этого, как
public function store(Request $request)
{
$searchLog = array();
// searchLog contains the data to be inserted into database
$this->dispatch(new SendTicket($searchLog));
}
Он отлично работает и вставки данных.
Вот мой вопрос:
- Как отправить объект в очереди?
- Что является лучшим способом отправки данных в очередь, чтобы мы могли обрабатывать?
Такое поведение Laravel было неожиданным для многих людей, так что я рад видеть, что там это связанный отчет об ошибке здесь: https://github.com/laravel/framework/issues/14526 – Ryan