2016-05-11 14 views
0

Ich versuche, einen Scheck für das Feldelement zu schaffen, ist gleich 1Überprüfen Sie, ob Feld in DB Laravel

Ich habe eine Hilfsklasse erstellt und hinzugefügt, um es in meinem app.blade.php

Hier ist mein Code.

Helper Klasse:

function checkMember() { 
    $stmt = DB::table('users')->where('member', '=', 1); 
    if ($stmt) { 
    return True; 
    } 
    return False; 
} 

app.blade.php

@if (checkMember() == True) 
    <li><a href="{{ url('/member') }}"><i class="fa fa-btn fa-terminal"></i>Member Panel</a></li> 
@endif 

Der Fehler ist, dass es die zeigt <li> selbst wenn das Element == 0 im DB

+0

Wie in der Dokumentation erwähnt, gibt die WHERE-Methode eine Auflistung zurück. So wird es immer in Ihrer Funktion wahr sein. – Daedalus

+0

Oh, gibt es eine Möglichkeit, zu falsch zu wechseln? –

Antwort

2

Ihre checkMember () Methode ist unvollständig - sie startet die Abfrage nicht, sie baut sie nur auf, so dass sie immer wahr ist. Versuchen Sie folgendes:

function checkMember() { 
    $stmt = DB::table('users')->where('member', 1)->first(); 

    return $stmt ? true : false; 
} 

Ich bin auch besorgt über Ihre Abfrage ein wenig - dies wird prüfen, ob es ein Benutzer mit ‚Mitglied‘ Feld ist auf true gesetzt. Also, wenn Sie mindestens ein Mitglied haben - es wird für alle Ihre Web-Nutzer wahr.

Möchten Sie diese Überprüfung nicht gegen den aktuellen angemeldeten Benutzer durchführen?

+0

Oh ja, das habe ich total vergessen. Ich möchte es mit dem aktuell angemeldeten Benutzer überprüfen. –

+0

Dann machen Sie so etwas wie DB :: table ('Benutzer') -> wo ('member', 1) -> wo ('id', Auth :: user() -> id) -> first(); –

+0

@DenisMysenko Es gibt eine viel einfachere Methode als das: 'Auth :: user() -> member == 1? wahr: falsch; '. – Daedalus

Verwandte Themen