Laravel У класса задания неполная пройденная модель - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь передать модель в класс заданий, и когда модель отправляется в класс заданий, она там не завершена. Я имею в виду, что он показывает только два атрибута вместо 10. $queue_match - это полная модель (все атрибуты включены, все в порядке), но когда она отправляется в класс Job, тогда я вижу только два атрибута. PS: я включил мою модель в начало класса Job,

$z = dispatch(new updateMatchStatus($queue_match))->onConnection('database')->delay(now()->addMinutes('1'));

namespace App\Jobs;

use App\Http\Controllers\AdminController;
use App\Models\Match;
use Carbon\Carbon;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class updateMatchStatus implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $queue_match;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(Match $queue_match)
    {
        //
        $this->queue_match = $queue_match;
//        dd($queue_match);
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle(Match $queue_match)
    {

            $now = Carbon::now('PKT');
            $now = Carbon::parse($now, 'PKT')->startOfMinute();

            //  registration close hack, will set Match status to F 30 mins before due time.
            $now = $now->addMinutes(30);
            $due_time =  Carbon::parse($queue_match->due_time, 'PKT');

            if ($now->greaterThan($due_time)) {
                $queue_match->status = 'F';
//                dd($queue_match);
                $queue_match->save();
            }
    }
}

, только два атрибута в скриншоте

В соответствии с запросом, вот класс соответствия

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Match extends Model
{
    //
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'platform', 'category', 'map', 'fee', 'is_elite', 'due_time', 'status'
    ];

    public function getPlatformAttribute($value) {
        if ($value == 'M') {
            return $value ."obile";
        }
        else {
            return $value ."mulator";
        }

    }

//    default attributes
    protected $attributes= [
        'status' => 'A',
        'is_elite' => false
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
//    hidden fields for return response
    protected $hidden = [
        'created_at', 'updated_at',

    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [

    ];

    public function registrations() {
        return $this->hasMany('App\Models\Registration', 'match_id', 'id');
    }

    public function results() {
        return $this->hasMany('App\Models\Result', 'match_id', 'id');
    }
}

И вот как я получаю $queue_match, который передается на работу.

$queue_match = Match::create([
    'category' => $request['category'],
    'platform' => $request['platform'],
    'map' => $request['map'],
    'fee' => $request['fee'],
    'due_time' => $request['due_time'],
]);
...