Cóż, aby rozpocząć, musisz wykonać findOrFail () lub podobny w zapytaniu użytkownika $
Mark Baker
9
to naprawdę nie pomaga
Ben
1
Więc co to robi? Dlaczego to nie pomaga? $user = User::where('email', '=', Input::get('email'));po prostu tworzy zapytanie w $user, musisz wykonać to zapytanie. findOrFail()jest jednym ze sposobów wykonania tego zapytania. get()byłby inny sposób, firstOrFail()inny
Mark Baker
2
Jeśli sugestia „tak naprawdę nie pomaga”, spróbuj powiedzieć, dlaczego tak naprawdę nie pomaga, ponieważ w ten sposób oznacza to, że wiemy, jak ją poprawić / zmienić
choć nie pasują do pytania, wciąż bardzo przydatne funkcje. Różnica między nimi jest, że firstOrNew instancję instancji modelu o nazwie podczas firstOrCreate oszczędza poszukiwana modelu natychmiast więc trzeba aktualizować zmiany w modelu firstOrCreate'd.
Gokigooooks
Tak, lub innym sposobem myślenia o tym jest użycie firstOrCreate, jeśli możesz przekazać wszystkie atrybuty za jednym razem (użyj drugiego parametru), ale najpierw OrNew, jeśli będziesz potrzebować dalszej logiki przed zapisaniem.
Tak, ale nie zwraca kolekcji. Zwraca pojedynczy obiekt modelu, jak można założyć, że każdy użytkownik ma unikalny obiekt, emailwięc ->isEmpty()zgłosi błąd.
user3574492
A jeśli otrzymam następujący błąd:Call to a member function isEmpty() on null
Pathros
6
if(User::where('email','[email protected]')->first())// It existselse// It does not exist
Używaj first(), nie count()tylko , jeśli musisz tylko sprawdzić istnienie.
first()jest szybszy, ponieważ sprawdza pojedynczy mecz, a count()zlicza wszystkie mecze.
Laravel 6 lub na górze: wpisz nazwę tabeli, a następnie podaj warunek klauzuli where na przykład where ('id', $ request-> id)
publicfunction store(Request $request){
$target = DB:: table('categories')->where('title', $request->name)->get()->first();if($target ===null){// do what ever you need to do
$cat =newCategory();
$cat->title = $request->input('name');
$cat->parent_id = $request->input('parent_id');
$cat->user_id=auth()->user()->id;
$cat->save();return redirect(route('cats.app'))->with('success','App created successfully.');}else{// match found return redirect(route('cats.app'))->with('error','App already exists.');}}
// if you need to do something with the user if($user =User::whereEmail(Input::get('email'))->first()){// ...}// otherwise
$userExists =User::whereEmail(Input::get('email'))->exists();
$user = User::where('email', '=', Input::get('email'));
po prostu tworzy zapytanie w$user
, musisz wykonać to zapytanie.findOrFail()
jest jednym ze sposobów wykonania tego zapytania.get()
byłby inny sposób,firstOrFail()
innyOdpowiedzi:
To zależy, czy chcesz później pracować z użytkownikiem, czy tylko sprawdzić, czy istnieje.
Jeśli chcesz użyć obiektu użytkownika, jeśli istnieje:
A jeśli chcesz tylko sprawdzić
A nawet ładniej
źródło
exists()
przeciwko nieistniejącemu rekordowi,Call to a member function exists() on null
first()
Jednym z najlepszych rozwiązań jest użycie metody
firstOrNew
lubfirstOrCreate
. dokumentacja zawiera więcej szczegółów na temat obu.źródło
źródło
exists()
metoda.Eloquent używa kolekcji. Zobacz następujący link: https://laravel.com/docs/5.4/eloquent-collections
źródło
email
więc->isEmpty()
zgłosi błąd.Call to a member function isEmpty() on null
Używaj
first()
, niecount()
tylko , jeśli musisz tylko sprawdzić istnienie.first()
jest szybszy, ponieważ sprawdza pojedynczy mecz, acount()
zlicza wszystkie mecze.źródło
W laravel eloquent, has default exist (), zapoznaj się z przykładem.
if(User::where('id', $user_id )->exists()){ // your code... }
źródło
Laravel 5.6.26v
znaleźć istniejący rekord za pomocą klucza podstawowego (e-mail lub identyfikator)
następnie
obejmują „use DB”, a nazwa tabeli user staje się liczbą mnogą przy użyciu powyższego zapytania jak user to users
źródło
Spowoduje to sprawdzenie, czy żądany adres e-mail istnieje w tabeli użytkowników:
źródło
W twoim kontrolerze
W widoku - Wyświetl już istniejącą wiadomość
źródło
required|unique:users,email|email
działałby z try / catch
-> get () nadal zwróci pustą tablicę
źródło
źródło
Łatwo jest dowiedzieć się, czy są jakieś zapisy, czy nie
źródło
źródło
możesz użyć walidacji laravel.
Ale ten kod jest również dobry:
źródło
Spowoduje to sprawdzenie, czy określony adres e-mail istnieje w tabeli:
źródło
Sprawdzanie instrukcji
null
wewnątrzif
uniemożliwia Laravelowi zwrócenie 404 natychmiast po zakończeniu zapytania.Wygląda na to, że uruchamia podwójne zapytanie, jeśli użytkownik zostanie znaleziony, ale nie mogę znaleźć innego niezawodnego rozwiązania.
źródło
find
zwhere
.User::where(id, 1)->first()
można zapisać jako
Zwróci wartość prawda lub fałsz bez przypisywania zmiennej tymczasowej, jeśli tylko do tego używasz $ user w oryginalnej instrukcji.
źródło
Myślę, że poniższy sposób jest najprostszym sposobem na osiągnięcie tego samego:
źródło
Utworzono poniżej metodę (dla mnie), aby sprawdzić, czy podany identyfikator rekordu istnieje w tabeli Db, czy nie.
Strona główna Pomaga!
źródło
Najłatwiejszy sposób na zrobienie tego
źródło
Laravel 6 lub na górze: wpisz nazwę tabeli, a następnie podaj warunek klauzuli where na przykład where ('id', $ request-> id)
źródło
Skuteczny sposób sprawdzenia, czy rekord istnieje, należy użyć metody is_null, aby sprawdzić w zapytaniu.
Poniższy kod może być pomocny:
źródło
Najkrótsze opcje pracy:
źródło
tutaj jest link do czegoś, co moim zdaniem może pomóc https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/
źródło
jest to prosty kod, aby sprawdzić, czy e-mail istnieje w bazie danych lub nie
źródło