diff --git a/src/Generators/Statements/FormRequestGenerator.php b/src/Generators/Statements/FormRequestGenerator.php index 86d04592..1ca26eef 100644 --- a/src/Generators/Statements/FormRequestGenerator.php +++ b/src/Generators/Statements/FormRequestGenerator.php @@ -146,7 +146,7 @@ private function validationRules(string $qualifier, string $column) } else { /** @var \Blueprint\Models\Model $column */ foreach ($model->columns() as $column) { - if ($column->dataType() === 'id') { + if ($column->name() === 'id') { continue; } diff --git a/src/Translators/Rules.php b/src/Translators/Rules.php index c23441c2..3e1b3314 100644 --- a/src/Translators/Rules.php +++ b/src/Translators/Rules.php @@ -17,8 +17,7 @@ public static function fromColumn(string $context, Column $column) } if ($column->dataType() === 'id' && Str::endsWith($column->name(), '_id')) { - [$prefix, $field] = explode('_', $column->name()); - $rules = array_merge($rules, ['integer', 'exists:' . Str::plural($prefix) . ',' . $field]); + $rules = array_merge($rules, ['integer', 'exists:' . Str::plural(Str::beforeLast($column->name(), '_id')) . ',id']); } if (in_array($column->dataType(), [ diff --git a/tests/Feature/Generator/Statements/FormRequestGeneratorTest.php b/tests/Feature/Generator/Statements/FormRequestGeneratorTest.php index ee5fb632..145e9abb 100644 --- a/tests/Feature/Generator/Statements/FormRequestGeneratorTest.php +++ b/tests/Feature/Generator/Statements/FormRequestGeneratorTest.php @@ -219,7 +219,6 @@ public function it_respects_configuration() $this->assertEquals(['created' => ['src/path/Http/Requests/PostStoreRequest.php']], $this->subject->output($tree)); } - /** * @test */ diff --git a/tests/fixtures/definitions/model-reference-validate.bp b/tests/fixtures/definitions/model-reference-validate.bp index 7d5ffec4..2174602e 100644 --- a/tests/fixtures/definitions/model-reference-validate.bp +++ b/tests/fixtures/definitions/model-reference-validate.bp @@ -1,10 +1,11 @@ models: Certificate: name: string + certificate_type_id: id reference: string document: string expiry_date: date - remarks: nullable text + remarks: text nullable controllers: Certificate: diff --git a/tests/fixtures/form-requests/certificate-store.php b/tests/fixtures/form-requests/certificate-store.php index f619dc57..b8a22c29 100644 --- a/tests/fixtures/form-requests/certificate-store.php +++ b/tests/fixtures/form-requests/certificate-store.php @@ -25,6 +25,7 @@ public function rules() { return [ 'name' => 'required|string', + 'certificate_type_id' => 'required|integer|exists:certificate_types,id', 'reference' => 'required|string', 'document' => 'required|string', 'expiry_date' => 'required|date', diff --git a/tests/fixtures/form-requests/certificate-update.php b/tests/fixtures/form-requests/certificate-update.php index b34a081b..958f23ad 100644 --- a/tests/fixtures/form-requests/certificate-update.php +++ b/tests/fixtures/form-requests/certificate-update.php @@ -25,6 +25,7 @@ public function rules() { return [ 'name' => 'required|string', + 'certificate_type_id' => 'required|integer|exists:certificate_types,id', 'reference' => 'required|string', 'document' => 'required|string', 'expiry_date' => 'required|date',