简体   繁体   中英

Laravel Eloquent with()-> returning null

I am trying to use Eloquent to get a specific product that has a brand_id column that maps to a brands table, the brand array is coming back empty.

Is there anything obvious here that needs to be changed?

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

//Product model

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

//Brand model

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

You have this:

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

You are getting null for brand and it could be because you have some specific fields and most probably you didn't select the foreing_key from the products table that creates the relationship with Brand , so if your products table contains the foreign_key (probably brand_id ) of brand table then you have to select that foreign_key from the products table too. So, just add that foreign_key/brand_id in the $fields variable. Without the relation builder key ( FK ) the Brand won't be loaded.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM