Skip to content

Commit 07e88dc

Browse files
authored
Generate validation rules for belongsTo relationships (#211)
1 parent 60881b4 commit 07e88dc

File tree

6 files changed

+6
-5
lines changed

6 files changed

+6
-5
lines changed

src/Generators/Statements/FormRequestGenerator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ private function validationRules(string $qualifier, string $column)
146146
} else {
147147
/** @var \Blueprint\Models\Model $column */
148148
foreach ($model->columns() as $column) {
149-
if ($column->dataType() === 'id') {
149+
if ($column->name() === 'id') {
150150
continue;
151151
}
152152

src/Translators/Rules.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ public static function fromColumn(string $context, Column $column)
1717
}
1818

1919
if ($column->dataType() === 'id' && Str::endsWith($column->name(), '_id')) {
20-
[$prefix, $field] = explode('_', $column->name());
21-
$rules = array_merge($rules, ['integer', 'exists:' . Str::plural($prefix) . ',' . $field]);
20+
$rules = array_merge($rules, ['integer', 'exists:' . Str::plural(Str::beforeLast($column->name(), '_id')) . ',id']);
2221
}
2322

2423
if (in_array($column->dataType(), [

tests/Feature/Generator/Statements/FormRequestGeneratorTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,6 @@ public function it_respects_configuration()
219219
$this->assertEquals(['created' => ['src/path/Http/Requests/PostStoreRequest.php']], $this->subject->output($tree));
220220
}
221221

222-
223222
/**
224223
* @test
225224
*/

tests/fixtures/definitions/model-reference-validate.bp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
models:
22
Certificate:
33
name: string
4+
certificate_type_id: id
45
reference: string
56
document: string
67
expiry_date: date
7-
remarks: nullable text
8+
remarks: text nullable
89

910
controllers:
1011
Certificate:

tests/fixtures/form-requests/certificate-store.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public function rules()
2525
{
2626
return [
2727
'name' => 'required|string',
28+
'certificate_type_id' => 'required|integer|exists:certificate_types,id',
2829
'reference' => 'required|string',
2930
'document' => 'required|string',
3031
'expiry_date' => 'required|date',

tests/fixtures/form-requests/certificate-update.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public function rules()
2525
{
2626
return [
2727
'name' => 'required|string',
28+
'certificate_type_id' => 'required|integer|exists:certificate_types,id',
2829
'reference' => 'required|string',
2930
'document' => 'required|string',
3031
'expiry_date' => 'required|date',

0 commit comments

Comments
 (0)