/**
  * Rollback changes performed by this migration.
  *
  * @return mixed
  */
 public function down()
 {
     $this->builder->table(Job::resolveTable()->getName(), function (Blueprint $table) {
         if (!$this->isSqlite()) {
             $table->dropColumn(['queue_connection', 'queue_name']);
         }
     });
 }
 /**
  * Find jobs by a tag.
  *
  * @param string $tag
  * @param bool $activeOnly
  * @param int $take
  *
  * @return mixed
  */
 public function findByTag($tag, $activeOnly = true, $take = 20)
 {
     $jobsTable = Job::resolveTable();
     $jobTagsTable = JobTag::resolveTable();
     $query = Job::query()->leftJoin($jobTagsTable->getName(), $jobsTable->field('id'), '=', $jobTagsTable->field('job_id'))->where($jobTagsTable->field('name'), $tag)->take($take);
     if ($activeOnly) {
         $query->whereIn($jobsTable->field('state'), [JobState::SCHEDULED, JobState::RUNNING, JobState::QUEUED]);
     }
     return $query->get([$jobsTable->getName() . '.*']);
 }