как проверить что такая строка уже существует в БД laravel,
Сразу вставка идет в таблицу language_levels но а потом в profile_languages так вот получается что если такой самый (language_id от одного и того же profile_id передать он снова продублируется
foreach ($result as $resul){
$language_level_id = DB::table('language_levels')->insertGetId(
['language_id' => $language_id, 'level_id' => $level_id]);
DB::table('profile_languages')->insert(
['profile_id' => $profile_id, 'language_level_id' => $language_level_id]
);
}
есть идея но это не костыль будет?
1)зная profile_id получить все language_level_id которые пренадлежать данному профилю из таблицы profile_languages,
2)перебирая все id из language_levels и сравнивать language_id c с тем который мы хотим вставить и на сопадении его update если нет то вставить такую строку?
Спасибо
Ответы (2 шт):
Есть у Laravel такая замечательная функция как exists()
Пример использования:
DB::table('orders')->where('finalized', 1)->exists()
Возвращает true или false
Для того чтобы сохранить запись напишите следующее(на примере Request $request):
$language_level = new LanguageLevel;
$language_level->level_id = $request->level_id;
$language_level->language_id = $request->language_id;
$language_level->save();
$profile_language = new ProfileLanguage;
$$profile_language->profile_id = $request->profile_id;
$profile_language->language_level_id = $language_level->id;
$profile_language-save();
Правильно разделять логику создания и обновления модели. Но если вам так хочется, то вот проверка:
Вам необходимо вытащить все языки профиля (приводил пример тут):
App\Profile::with('languages.language')->find($request->profil_id);
Затем в выборке найти необходимый язык. Если он есть, обновляем иначе создаём.

