Я работаю над laravel
-приложением, в котором пользователи могут добавлять URL-адреса социальных сетей в свой профиль. Они выбирают сеть из раскрывающегося списка, скажем, Facebook, а затем вводят URL-адрес в другое поле ввода. Пока все хорошо, но оказывается, что когда пользователь, например, хочет отредактировать только URL-адрес, появляется ошибка, в которой говорится, что социальная сеть уже существует, например, что пользователь пытается ее дублировать. Сначала, когда изменился URL-адрес и в раскрывающемся списке была выбрана другая сеть, он работает. Я не знал об этой ошибке / проблеме и не могу понять, почему это происходит.
вот фрагмент кода из моего update()
метода в Контроллере:
$query = DB::table("social_networks")
->where('social_networks.id', '=', request()->social_network_id)
->select('social_networks.name as social_network_name', 'social_networks.icon as social_network_icon')
->get()
->toArray();
// Check if chosen social network
// is Skype
$result = array_filter($query, function ($item) {
return ($item->social_network_name === 'skype');
});
// If chosen network is skype
// do not check url for regex
// else do check if regex is valid
if (!empty($result)) {
$validated = $request->validate([
'url' => 'required|string',
'social_network_id' => 'required'
], $errors);
} else {
$validated = $request->validate([
'url' => ['required', 'regex:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/'],
'social_network_id' => 'required'
], $errors);
}
$user_social_network = UserSocialNetwork::where(['id' => $id, "user_id" => $request->user()->id])->first();
//HERE IT FAILS//
if ($user_social_network->where(["social_network_id" => $validated["social_network_id"]])->first() == null) {
$user_social_network->social_network_id = $validated["social_network_id"];
$user_social_network->url = $validated["url"];
$user_social_network->save();
} else {
return response(['errors' => ["social_network" => ["Social network already created."]]], 400);
}
return response(['success' => true, "user_social_network" => $user_social_network], 201);
Пожалуйста помогите ...