Confluence 에 심각한 보안 취약점이 발견되었으니 사용자분들은 업그레이드 하세요.!
 
1
0
-1

컨트롤러단에서 

$user = \App\User::create(정보);

Test::dispatch($user)→delray(now()→addminute(10)); 

);

위와 같은 코드로 큐를 실행했고, 인자인 $user 변수에는 유저정보가 들어있습니다

10분후에 생성된 유저를 삭제하려고하는 연습 코드를 작성하고싶은데 

큐 클래스에서 인자로보낸 유저정보를 어떤식으로 받아야할지 모르겠습니다 ....

어떤점이 잘못되었나 확인하려고 log로도 확인해보려 했지만 

로그도 찍히는것이 없고


<?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 Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class WaitingDepositReservationDelete implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public $tries = 1;
public function __construct()
{
//
}

/**
* Execute the job.
*
* @return void
*/
public function handle(Request $user)
{
   \App\User::where('id' , $user→id)→first()→delete();

   log::alert($user);
}
}


아래는 큐 데이터베이스 실패 내용입니다 ,, 


힌트좀 주시면 감사하겠습니다



Symfony\Component\Debug\Exception\FatalThrowableError: Call to a member function delete() on null in C:\Bitnami\wampstack-7.1.21-0\apache2\htdocs\teset\app\Jobs\Test.php:34
Stack trace:

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      $user가 Request 객체라서 $user→id 값이 null 이네요. 그래서  \App\User::where('id' , $user→id)→first() 하면 null 이어서 해당 에러가 발생했네요. 

      Test::dispatch($user)→delray(now()→addminute(10));

      위 코드로 하면 Job 클래스 생성자인자로 전달했기때문에 Job 클래스 프로퍼티 값으로 set 해서 접근할 수 있어요.


      예시

      class TestJob implements ShouldQueue
      {
          use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
      
          /** @var User */
          protected $user;
      
          public function __construct(User $user)
          {
              $this->user = $user;
          }
      
          /**
           * Execute the job.
           *
           * @return void
           */
          public function handle()
          {
              $this->user->delete();
              log::alert($user);
          }
      }
        CommentAdd your comment...