В моей базе данных приложений laravel есть таблица с названием apps
. В этой таблице у меня есть имя столбца 'domain'. Домен - это уникальный столбец.
Проблема
В моем внешнем блейде есть форма для создания пользователем нового приложения. Из этой формы пользователь должен сначала ввести имя субдомена, и есть раскрывающийся список для выбора имени домена.
Как только пользователь вводит имя субдомена, а затем выбирает имя домена, я объединяю два ввода с моего контроллера, а затем это объединенное значение сохраняется в столбце «домен».
Пример: Sub имя домена: AB C имя домена: TEST.SITE Объединенное значение (значение, которое я сохраняю в столбце домена): AB C .TEST.SITE
Теперь, когда мой домен является уникальным, когда Дублирующее значение выдает мне ошибку laravel, сообщающую о дублировании записи.
Но из моего контроллера я не смог проверить ввод имени субдомена, так как в конце я сохраняю объединенное значение.
Любое решение, чтобы исправить это и правильно выполнить проверку,
Вот код для формы.
<form id="appform" action="{{ route('app.save') }}" method="post">
@csrf
<input type="text" id="app-subdomainname" class="form-control" name="subDomainName" placeholder="{{ __('sentence.Sub Domain Name') }}" aria-required="true">
<br>
<select id="app-subdomainsuffix" class="form-control" name="subDomainSuffix" aria-required="true">
<option value="">- {{ __('sentence.Select domains') }} -</option>
<option value="TEST.SITE">TEST.SITE</option>
</select>
<br>
<select id="app-packagetype" class="form-control" name="packageType" aria-required="true">
<option value="">- {{ __('sentence.Select package type') }} -</option>
@foreach($packages as $package)
<option value="{{$package->id}}">{{$package->name}}</option>
@endforeach
</select>
<br>
<select id="app-payment" class="form-control" name="paymentoption" aria-required="true">
</select>
<br>
<select id="app-themeid" class="form-control" name="themeid" aria-required="true">
<option value="">- {{ __('sentence.Select theme') }} -</option>
<option value="default">Starter</option>
</select>
<br>
<select id="app-lang" class="form-control" name="lang" aria-required="true">
<option value="">- {{ __('sentence.Select Language') }} -</option>
<option value="en">English</option>
<option value="jp">Japanese</option>
</select>
<br>
<div class="form-group">
<button type="submit" class="btn btn-success">{{ __('sentence.Save') }}</button>
</div>
</form>
Мой контроллер (включена только функция хранилища данных)
$this->validate($request, [
'subDomainName' => 'required',
'subDomainSuffix' => 'required',
//'package_type' => 'required',
'lang' => 'required',
'theme' => 'required',
'paymentoption' => 'required',
]);
$user = Auth::user();
$fullDomain = $request->subDomainName.'.'.$request->subDomainSuffix;
$credentials = $this->generateDbcredentials();
App::create([
'domain' => $fullDomain,
'masterUserId' => $user->id,
'dbName' => $credentials[0],
'host' =>env('DB_HOST', '127.0.0.1'),
'username' => $credentials[1],
'password' => $credentials[2],
'theme' => $request->themeid,
'lang' => $request->lang,
'status' => 1,
'package_type' => $request->packageType,
'payment_option' => $request->paymentoption,
'isAppCreated' => 1,
'isDefault' =>0,
]);
Как правильно выполнить проверку
Спасибо.