ocupacaoId = $ocupacaoId; } public function passes($attribute, $value) { return self::isValid($this->ocupacaoId, $value); } public static function isValid($ocupacaoId, $value) { return DB::table('sigtap.procedimento')->where('id', $value) ->where(function ($query) use ($ocupacaoId) { $query->whereExists(function ($query) use ($ocupacaoId) { $query->select(DB::raw(1)) ->from('sigtap.procedimento_ocupacao') ->whereColumn('sigtap.procedimento_ocupacao.procedimento_id', 'sigtap.procedimento.id') ->where('sigtap.procedimento_ocupacao.ocupacao_id', $ocupacaoId); })->orWhereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('sigtap.procedimento_ocupacao') ->whereColumn('sigtap.procedimento_ocupacao.procedimento_id', 'sigtap.procedimento.id'); }); }) ->exists(); } public function message() { return 'Procedimento inválido para a ocupação informada.'; } }