I am using Laravel 5.4
: Queue
for creating the jobs for bulk insertion and APi calls. Whenever I call the API from the Postman
, it executes the script but processing of the Jobs fail with the exception
Illuminate\Database\Eloquent\ModelNotFoundException' with message 'No query results for model [App\message] ' in C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php:312
> Stack trace:
> #0 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Queue\SerializesAndRestoresModelIdentifiers.php(46):
> Illuminate\Database\Eloquent\Builder->findOrFail(NULL)
> #1 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Queue\SerializesModels.php(42):
> App\Jobs\createmessage->getRestoredPropertyValue(Object(Illuminate\Contracts\Database\ModelIdentifier))
> #2 [internal function]: App\Jobs\createmessage->__wakeup()
> #3 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Queue\CallQueuedHandler.php(38):
> unserialize('O:22:"App\\Jobs\\...')
> #4 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Queue\Jobs\Job.php(69):
> Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\DatabaseJob),
> Array)
> #5 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Queue\Worker.php(317):
> Illuminate\Queue\Jobs\Job->fire()
> #6 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Queue\Worker.php(267):
> Illuminate\Queue\Worker->process('database',
> Object(Illuminate\Queue\Jobs\DatabaseJob),
> Object(Illuminate\Queue\WorkerOptions))
> #7 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Queue\Worker.php(224):
> Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\DatabaseJob),
> 'database', Object(Illuminate\Queue\WorkerOptions))
> #8 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Queue\Console\WorkCommand.php(102):
> Illuminate\Queue\Worker->runNextJob('database', 'default',
> Object(Illuminate\Queue\WorkerOptions))
> #9 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Queue\Console\WorkCommand.php(86):
> Illuminate\Queue\Console\WorkCommand->runWorker('database', 'default')
> #10 [internal function]: Illuminate\Queue\Console\WorkCommand->fire()
> #11 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(30):
> call_user_func_array(Array, Array)
> #12 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(87):
> Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
> #13 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php(31):
> Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application),
> Array, Object(Closure))
> #14 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Container\Container.php(539):
> Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application),
> Array, Array, NULL)
> #15 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Console\Command.php(182): Illuminate\Container\Container->call(Array)
> #16 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\symfony\console\Command\Command.php(264):
> Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput),
> Object(Illuminate\Console\OutputStyle))
> #17 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Console\Command.php(168): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput),
> Object(Illuminate\Console\OutputStyle))
> #18 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\symfony\console\Application.php(874):
> Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput),
> Object(Symfony\Component\Console\Output\ConsoleOutput))
> #19 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\symfony\console\Application.php(228):
> Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand),
> Object(Symfony\Component\Console\Input\ArgvInput),
> Object(Symfony\Component\Console\Output\ConsoleOutput))
> #20 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\symfony\console\Application.php(130):
> Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput),
> Object(Symfony\Component\Console\Output\ConsoleOutput))
> #21 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(122):
> Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput),
> Object(Symfony\Component\Console\Output\ConsoleOutput))
> #22 C:\xampp\htdocs\Abhishek\SMS\SMS_rest_dev\artisan(36): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput),
> Object(Symfony\Component\Console\Output\ConsoleOutput))
> #23 {main}
My MessageController.php (Controller file)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\message;
use App\template;
use Illuminate\Support\Facades\DB;
use App\API\ApiHelper;
use App\Repos\Repository;
use GuzzleHttp\Client;
use App\Jobs\createmessage;
class MessageController extends Controller
{
use ApiHelper;
protected $model;
protected $mes;
public function __construct(message $message)
{
$this->model = new Repository( $message );
$this->mes = $message;
$this->middleware('auth:api');
}
public function store(Request $request)
{
dispatch(new createmessage ($this->mes));
}
}
My job classes file
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use App\API\ApiHelper;
use App\Repos\Repository;
use GuzzleHttp\Client;
use App\message;
use App\template;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class createmessage implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
use ApiHelper;
protected $model;
public $tries = 2;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(message $message)
{
$this->model = $message;
}
/**
* Execute the job.
*
* @return void
*/
public function handle(Request $request)
{
$use_id = $request->user()->id;
foreach($request->data as $temp)
{
//code
}
return response()->json($sms, 201);
}
}
My message file (Model)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class message extends BaseModel
{
protected $table = 'message';
//public $timestamps = false;
public $primaryKey = 'message_id';
protected $fillable =['message_id', 'user_id','template_id', 'sender_id', 'params', 'message', 'cost', 'phone_number'];
const CREATED_AT = 'created_on';
const UPDATED_AT = 'updated_on';
public function user()
{
return $this->belongsTo(user::class)->select('id', 'name');
}
public function message_template()
{
return $this->belongsTo(template::class)->select('template_id', 'template', 'type');
}
}
my api.php (route file)
<?php
use Illuminate\Http\Request;
// Route::middleware('auth:api')->get('/user', function (Request $request) {
// return $request->user();
// });
Route::Resource('test/client', 'ClientsController', ['only' => ['index', 'show', 'store']]);
Route::Resource('test/sender', 'SenderController', ['only' => ['index','show', 'store', 'destroy']]);
Route::Resource('test/template', 'TemplateController', ['only' => ['index','show', 'store', 'destroy']]);
Route::Resource('test/message', 'MessageController', ['only' => ['index','show', 'store']]);
Route::get('/userdetail', function (Request $request) {
return $request->user();
})->middleware(['auth:api', 'scopes:manage-SMS']);
I have tried to followed the documentation for queue in Laravel. if other information is required, it will be provided. Any help will be greatly appreciated. Thanks
composer dumpautoload
? – aynber