2017-09-02 5 views
0

noch ziemlich verwirrt auf Laravel 5.4, wie ich es bin hier, ich versuche, die Reihe von Daten aus dem Nehmen Tisch zu bekommen, das die gleichen Jahre und Kurs bekam mit dem Benutzer.Laravel 5.4 - Daten aus einer anderen Tabelle überprüft

$show = Profile::where('userid','=',$id)->first(); 
$check1 = Record::where([['year','=',$show->year],['course','=',$show->course]])->get(); 

Es wurde erfolgreich ausgeführt und konnte die Liste der Leute bekommen. Nun, was ich als nächstes tun wollte, ist zu überprüfen, ob diese Liste von Personen (Ergebnisse von $ check1) auf einer anderen Tabelle namens Fbuser existiert. Versuche dies zu tun,

$check2 = Fbuser::where([['first_name','=',$check1->firstname],['last_name','=',$check1->lastname]]); 
    if ($check2 === null) { 
     return 'recommend'; 
    } else { 
     return 'exit'; 
    } 

Aber es gab mir einen Fehler

(1/1) Exception Eigenschaft [Vorname] nicht auf dieser Sammlung Beispiel existieren.

Gibt es eine Möglichkeit, dass ich darüber gehen kann? Vielen Dank im Voraus.

+0

Was ist Tabelle Fbuser Felder Name? –

Antwort

0

check1 enthält eine Sammlung von Datensätzen keine einzige Record. Um eine einzige Record zu erhalten, können Sie foreach verwenden. Versuchen Sie folgendes:

foreach($check1 as $record){ 
    $check2 = Fbuser::where([['first_name','=',$record->firstname],['last_name','=',$record->lastname]]); 
    if ($check2 === null) { 
     return 'recommend'; 
    } else { 
     return 'exit'; 
    } 
} 

Sie sollten auch Ergebnisse für $check2 bekommen. where() gibt das Abfrage-Builder-Objekt zurück. Sie sollten am Ende get() oder first() verwenden, um Ergebnisse für diese Abfrage zu erhalten.

$check2 = Fbuser::where([['first_name','=',$check1->firstname],['last_name','=',$check1->lastname]])->get() 
+0

Oh richtig. Hab nicht darüber nachgedacht. Danke, mein Herr. Ich bin mir nicht sicher, ob ich die richtigen Ergebnisse bekomme, aber gibt es irgendeine Möglichkeit, die Liste der Leute zu bekommen, nur um zu überprüfen, ob es die richtige Liste ist. – user1540

+0

Ah Ich habe versucht dd(), nehme an, geben Sie mir 2 Ergebnisse, aber es gibt mir nur eins. Denken Sie, dass etwas mit meiner Frage falsch ist, aber danke Herr, es funktioniert jetzt. – user1540

+0

@ user1540 sollten Sie auch Ihre Abfrage für 'check2' korrigieren. Ich habe meine Antwort aktualisiert. –

0

Wenn Sie get() verwenden, erhalten Sie eine Sammlung. Sie könnten nur eine von Objekten erhalten, indem es den Index, wie

{{ $collection[0]->name }} 

dies ändern:

$show = Profile::where('userid','=',$id)->first(); 
$check1 = Record::where([['year','=',$show->year],['course','=',$show->course]])->get(); 

$check2 = Fbuser::where([['first_name','=',$check1[0]->firstname], ['last_name','=',$check1[0]->lastname]]); 
if ($check2 === null) { 
    return 'recommend'; 
} else { 
    return 'exit'; 
} 

Hoffe, es hilft.

Verwandte Themen