2014-06-09 12 views
6

Próbuję użyć Eloquent, aby uzyskać konkretny produkt, który ma kolumnę brand_id, która mapuje do tabeli brands, tablica brand powraca pusta.Laravel Epoquent z() -> zwracająca wartość null

Czy jest coś oczywistego, co należy zmienić?

$product = Product::with('images')->with('brand')->select($fields)->where('display', '=', 1)->find($id); 

// Model urządzenia

class Product extends Eloquent { 
    ... 
    public function brand() 
    { 
     return $this->belongsTo('Brand'); 
    } 

// Marka Model

class Brand extends Eloquent { 
... 
public function products() 
{ 
    return $this->hasMany('Product'); 
} 
+0

Sprawdziłeś to za pomocą: $ brand = $ product-> brand(); ? – num8er

+0

Jakie pola znajdują się w zmiennej '$ fields'? –

Odpowiedz

9

You have to:

$product = Product::with('images', 'brand') 
        ->select($fields) 
        ->where('display', 1) 
        ->find($id); 

Otrzymujesz null dla brand i może być bo masz jakieś konkretne pola i najprawdopodobniej nie wybrano do foreing_key z tabeli products który tworzy relacje z Brand, więc jeśli twój stół products zawiera foreign_key (prawdopodobnie brand_id) z brand stół to trzeba zaznaczyć, że foreign_key przeprowadzoną products także. Dodaj tylko foreign_key/brand_id w zmiennej $fields. Bez klucza budującego relację (FK) plik Brand nie zostanie załadowany.

+1

Geniusz. Dziękuję, miałeś dokładnie rację co do pól $. – Jazzy

+0

Serdecznie witamy :-) –

Powiązane problemy