2014-06-09 26 views
6

Tôi đang cố gắng sử dụng Eloquent để có được một sản phẩm cụ thể có cột brand_id ánh xạ tới một bảng brands, mảng brand sẽ trở lại trống.Laravel Eloquent với() -> trả về null

Có điều gì rõ ràng ở đây cần được thay đổi không?

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

// mô hình sản phẩm

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

// Nhãn hiệu mô hình

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

have You checked it with: $ brand = $ product-> brand(); ? – num8er

+0

Trường nào trong biến '$ fields'? –

Trả lời

9

Bạn đã này:

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

Bạn đang nhận được null cho brand và nó có thể là bởi vì bạn có một số lĩnh vực cụ thể và có lẽ hầu hết bạn không chọn foreing_key từ bảng products tạo ra các mối quan hệ với Brand, vì vậy nếu bảng products của bạn có chứa foreign_key (có lẽ brand_id) của brand bảng sau đó bạn phải chọn mà foreign_key từ products bảng. Vì vậy, chỉ cần thêm foreign_key/brand_id vào biến số $fields. Nếu không có khóa trình tạo mối quan hệ (FK) thì Brand sẽ không được tải.

+1

Thiên tài. Cảm ơn bạn, bạn đã đúng về các trường $. – Jazzy

+0

Cảm ơn và chào mừng :-) –