Skip to content

Commit b4122f6

Browse files
committed
Merge branch 'develop' into 7.0
2 parents 41addac + cf41d9a commit b4122f6

File tree

1 file changed

+47
-4
lines changed

1 file changed

+47
-4
lines changed

src/Generators/ModelGenerator.php

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class ModelGenerator extends BaseGenerator
1818
protected $excluded_fields = [
1919
'created_at',
2020
'updated_at',
21+
'deleted_at',
2122
];
2223

2324
/** @var CommandData */
@@ -266,14 +267,56 @@ private function fillTimestamps($templateData)
266267
private function generateRules()
267268
{
268269
$dont_require_fields = config('infyom.laravel_generator.options.hidden_fields', [])
269-
+ config('infyom.laravel_generator.options.excluded_fields', []);
270+
+ config('infyom.laravel_generator.options.excluded_fields', $this->excluded_fields);
270271

271272
$rules = [];
272273

273274
foreach ($this->commandData->fields as $field) {
274-
if (!$field->isPrimary && $field->isNotNull && empty($field->validations) &&
275-
!in_array($field->name, $dont_require_fields)) {
276-
$field->validations = 'required';
275+
if (!$field->isPrimary && !in_array($field->name, $dont_require_fields)) {
276+
if ($field->isNotNull && empty($field->validations)) {
277+
$field->validations = 'required';
278+
}
279+
280+
/**
281+
* Generate some sane defaults based on the field type if we
282+
* are generating from a database table.
283+
*/
284+
if ($this->commandData->getOption('fromTable')) {
285+
$rule = empty($field->validations) ? [] : explode('|', $field->validations);
286+
287+
if (!$field->isNotNull) {
288+
$rule[] = 'nullable';
289+
}
290+
291+
switch ($field->fieldType) {
292+
case 'integer':
293+
$rule[] = 'integer';
294+
break;
295+
case 'boolean':
296+
$rule[] = 'boolean';
297+
break;
298+
case 'float':
299+
case 'double':
300+
case 'decimal':
301+
$rule[] = 'numeric';
302+
break;
303+
case 'string':
304+
$rule[] = 'string';
305+
306+
// Enforce a maximum string length if possible.
307+
foreach (explode(':', $field->dbInput) as $key => $value) {
308+
if (preg_match('/string,(\d+)/', $value, $matches)) {
309+
$rule[] = 'max:'.$matches[1];
310+
}
311+
}
312+
break;
313+
case 'text':
314+
$rule[] = 'string';
315+
break;
316+
}
317+
318+
$field->validations = implode('|', $rule);
319+
}
277320
}
278321

279322
if (!empty($field->validations)) {

0 commit comments

Comments
 (0)