2016-06-27 23 views
0

Ich denke, wie kann ich überprüfen, ob ich meine Datensatz existiert Raw SQL-Abfragen. Ich habe versucht, is_null Funktion zu verwenden, aber es funktioniert nicht für mich. Wenn ich also versuche, falsche Werte auszuwählen und den Submit-Button zu drücken, gebe ich den 'Success'-Klartext im Browser zurück.Wie überprüft man, ob der Datensatz in der Datenbank existiert

public function readEmployeeRecords() 
{ 
    $users = DB::select('select * from users where username = ?', [1]); 

    if(is_null($users)) 
    { 
     return ('Failed'); 
    } 
    else 
    { 
     return('Success'); 
    } 
} 

Formular

<form class = "form-inline" role = "form" method = "post" action = "{{ route ('account.accountSearch') }}"> 

<div class = "form-group"> 

    <input type = "text" name = "search" class = "form-control" placeholder = "Employee username"> 

</div> 

<button type = "submit" class = "btn btn-default">Search</button> 
<input type = "hidden" name = "_token" value = "{{ Session::token() }}"> 

</form> 
+1

Sie könnten 'var_dump ($ users)' zu sehen, was zurückgegeben wird und überprüfen Sie es. – postrel

+0

Gibt es einen Grund dafür, die ORM-Option nicht wie 'first' zu verwenden? –

Antwort

-1

Versuchen

bei Verwendung von (is_null ($ users) || $ users = "") {

0

Verwenden SELECT EXISTS(your subquery):

public function readEmployeeRecords() 
{ 
    $users = DB::select('SELECT EXISTS(SELECT * FROM users WHERE username = ?)', [1]); 

    if (!$users[0]) { 
     return ('Failed'); 
    } 
    else { 
     return('Success'); 
    } 
} 

Meine ursprüngliche Antwort war COUNT(*), die logisch hätte funktionieren sollen. Ich vermute jedoch, dass immer ein "Datensatz" zurückgegeben wurde, unabhängig von der tatsächlichen Anzahl.

+0

Es drucke mich immer noch die sonst Bedingung bro. – Francisunoxx

+0

@Francisunoxx Brich mir nicht, wenn du mich nicht kennst :-) ... arbeite gerade an einem Update für dich. –

+0

schätzte Ihre Zeit. Aber immer noch bringt es mich 'Erfolg' zurück. – Francisunoxx

0

Die Laravel 5.2 documentation sagt "Die Select-Methode wird immer ein Array von Ergebnissen zurückgeben." So könnte man count() verwenden, um zu sehen, ob es irgendwelche Ergebnisse im Array:

public function readEmployeeRecords() 
{ 
    $users = DB::select('select * from users where username = ?', [1]); 

    if (! count($users)) { 
     return ('Failed'); 
    } 

    return ('Success'); 
} 

is_null() prüft, ob eine Variable NULL ist. Ein leeres Array ist nicht gleich NULL

+0

Ich denke, es ist Ich habe es ausprobiert, aber ich gebe eine 'Success'-Meldung aus. – Francisunoxx

+0

@Francisunoxx Kannst du var_dump ($ users) und mir sagen, was es druckt? – postrel

+0

Ich lege die '! count' Methode der' ' var_dump ($ users) 'und gibt mir die Ausgabe' array (0) {} 'in allen von mir ausgewählten Werten – Francisunoxx

Verwandte Themen