2017-05-19 4 views
1

Ich habe diese Abfrage mit LEFT JOIN, die in phpMyAdmin Rückgabedaten istLaravel die Erstellung von Abfragen

SELECT * FROM `items` 
LEFT JOIN countries ON items.category_id = countries.id 
where items.id = 20 

Ich versuche es in Laravel zu reproduzieren wie diese

$defaultCountry = DB::table('items') 
       ->leftJoin('countries', 'countries.id', '=', 'items.country_id') 
       ->where('items.id', 20) 
       ->select('items.*', 'countries.*') 
       ->get(); 

aber wenn ich es ausgeführt I habe erhielt Fehler

der Versuch, Eigentum von nicht-Objekt zu erhalten ... Linie 6

Line 6 hat

{!! $defaultCountry->symbol !!} 

Symbol Symbol der defaultCountry ist, die in der Tabelle countries

Wenn ich ich bin sehen tun var_dump($defaultCountry) sind alle Daten in variabel ist. Warum bekomme ich diesen Fehler?

Antwort

2

Das Problem ist, dass Sie auf eine Objektvariable auf einer Sammlung zuzugreifen versuchen, für den Fall, dass Sie nur wollen Sie ein registrieren bekommen tauschen get() für first():

$defaultCountry = DB::table('items') 
       ->leftJoin('countries', 'countries.id', '=', 'items.country_id') 
       ->where('items.id', 20) 
       ->select('items.*', 'countries.*') 
       ->first(); 

Dann können Sie auf die Variable zugreifen Denn jetzt ist keine Sammlung von Ergebnissen. , Sollten Sie Schleife die Ergebnisse mit einer foreach oder for auf Ihrer Klinge Ansicht

Im Fall, dass Sie zu den Sammeldaten in der Ansicht zugreifen möchten:

@foreach($defaultCountry as $country) 
    {!! $country->symbol !!} 
@endforeach 
+1

So einfach. Vielen Dank! Zuerst wird es gut funktionieren. Ich habe kein anderes Symbol zu zeigen, also ist es zuerst(). Ich werde die Antwort akzeptieren, sobald SO es mir erlaubt. – Ivan

Verwandte Themen