LARAVEL - 如何获取模型的属性

时间:2017-01-25 14:24:48

标签: sql laravel model eloquent

我如何获得每种产品类别的类型名称?

例如 分类:CAT1 / CAT2。
产品:name1(类型:type1,type_id& categorie_id外键)
name2(类型:type2)
类型:type1
TYPE2

这是为这个类别(foreach)的“子菜单”类型制作一个类别菜单

我试过这个,但没有用(Undefined属性:Illuminate \ Database \ Eloquent \ Collection :: $ type)。只是$ cat->产品工作,但这不是我想要的:

$categories = Categorie::All();        

@foreach ($categories as $cat)   
               {{$cat->nom}}
               <ul>
                   @foreach ($cat->produit->type as $type)
                         <li><a href="#">{{$type->nom}}</a></li>                                               
                   @endforeach
              </ul>
@endforeach

[TYPE] 1,n(有)1,1 [PRODUCT] 1,1(归属)1,n [CATEGORIE]

产品

public function Categorie()
{
    return $this->belongsTo('App\Models\Categorie');
}
public function Type()
{
    return $this->belongsTo('App\Models\Type');
}

Categorie

public function Produit()
{
    return $this->hasMany('App\Models\Produit');
}

类型

public function Produit()
{
     return $this->hasMany('App\Models\Produit');
}

1 个答案:

答案 0 :(得分:0)

使用Eloquent实现此目标的最有效方法是使用3个查询从DB获取数据的方法。然后它使用了Laravel系列的强大功能:

// Get data from DB.
$categories = Categorie::with('products')->get();
$types = Type::all();

// Working with loaded collections.
@foreach ($categories as $category)
    {{ $category->name }}
    @foreach ($types->whereIn('id', $category->products->unique('type_id')->pluck('type_id')) as $type)
        {{ $type->name }}
    @endforeach
@endforeach