Я создал функцию в моей модели продукта и успешно сделал это
public static function generateSeriesNumberWithPrefix($tableName = '', $autogenField = '', $autogenStart = '', $autogenPrefix = '')
{
$listFiledValues = DB::table($tableName)->select($autogenField)->get();
if ($listFiledValues->isEmpty())
{
$generatedAutogen = $autogenPrefix.$autogenStart;
return $generatedAutogen;
}
elseif ($listFiledValues->isNotEmpty())
{
foreach($listFiledValues as $listFiledValue)
{
$eachListarray = $listFiledValue->$autogenField;
$totalListArrays[] = $eachListarray;
}
foreach($totalListArrays as $totalListArray)
{
$stringRemovedEachListArray = substr($totalListArray,strlen($autogenPrefix));
$stringRemovedTotalListArray[] = $stringRemovedEachListArray;
}
$maximumValue = max($stringRemovedTotalListArray);
$generatedAutogen = $autogenPrefix.++$maximumValue;
return $generatedAutogen;
}
}
И, наконец, в функции создания
public function create ()
{
$autogen = Product::generateSeriesNumberWithPrefix('product','autogen','1','PRO-');
return view('product.formadd', compact('result','sequence'));
}
Я использую конструктор форм Laravel, чтобы
{!! Form::text('productcode', $autogen, null, ['class' => 'form-group']) !!}
здесь generateSeriesNumberWithPrefix
- это имя функции и Product is a Model Name
Главное преимущество этой функции в том, что она не зависит от других полей, таких как created_at
или значения Max в primary key
, это автономная функция