Yes, you can create a custom validation rule and perform the DB query inside it. Here's an example implementation:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\DB;
class ValidCustomInputRule implements Rule
{
protected $table;
protected $column;
public function __construct($table, $column)
{
$this->table = $table;
$this->column = $column;
}
public function passes($attribute, $value)
{
$result = DB::table($this->table)->sum($this->column);
return $value <= $result;
}
public function message()
{
return 'The :attribute is greater than the allowed value.';
}
}
Then, in your form request, you can use this rule like this:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use App\Rules\ValidCustomInputRule;
class YourFormRequest extends FormRequest
{
public function rules()
{
return [
'input_name' => [
'required',
new ValidCustomInputRule('table_name', 'column_name'),
],
];
}
}
Replace input_name, table_name, and column_name with your actual values.