2015-04-20 13 views
16

Zwykle, gdy wywołuję Model->save(), pomyślnie tworzy nowy rekord w bazie danych. Próbuję debugować sytuację, gdy nic się nie dzieje i Model->save() zwraca wartość false. Jak mogę się dowiedzieć, co się dzieje?Model Laravel-> save() zwraca fałsz, ale nie ma błędu

$user = new User; 
$user->fields = 'example'; 
$user->save(); // returns false 

Uruchomione to nie pokazuje żadnych zapytań o wstawianie.

dd(DB::getQueryLog()); 

Ale jeśli I var_dump($user), poprawnie uzyskać wszystkie pola poprawnie zapisane w obiekcie.

Dzięki!

+1

'Event :: słuchać ('illuminate.query', function ($ query, $ wiązania $ czas) { \t error_log ($ zapytanie); }); 'spróbuj tego, aby sprawdzić zapytanie. – Dhiraj

+0

Czy masz na myśli wiedzieć, kiedy błąd aktualizacji? –

Odpowiedz

39

Aby uzyskać zapytań INSERT gdy $user->save(); błąd, można spróbować złapać wyjątek takiego:

try{ 
     $user = new User; 
     $user->fields = 'example'; 
     $user->save(); // returns false 
    } 
    catch(\Exception $e){ 
     // do task when error 
     echo $e->getMessage(); // insert query 
    } 

nadzieję, że to pomaga :)

+2

Naprawdę powinno to być '(\ Exception $ e)', ponieważ w przeciwnym razie będzie myślało, że szukasz klasy Exception w tym obszarze nazw. (O ile nie piszemy "use Exeption") –

+0

dzięki za przypomnienia :) –

-2

Jeśli chcesz po prostu uciec, nie wiedząc, co się dzieje można spróbować tego,

$user = new User; 
    $user->fields = 'example'; 
    if($user->save()){ 
     return true; 
    } 
    else{ 
     // returns false 
     //do something 
    } 
+1

To nie mówi, jakie były błędy, o co prosił OP. –

+0

Odpowiedź Irelevent –

Powiązane problemy