如何从一个items
中检索category
并为每个itemProperties
获取item
的集合,以便在item
时没有所有category具有的> properties ,集合中其余的属性存在,这些属性的值是空字符串还是类似的东西?
例如:
在表类别中,我有条目
在表 category_properties 中,我有条目
眼睛的颜色
尾巴长度
耳朵的形状
在表项中,我有条目
并且在 item_properties 中,我只有一个条目
与项目表中的加菲猫和 category_properties 中的眼睛的颜色有关。
如何获取[ Garfield => [ 'color of eyes' => 'green', 'length of tail' => ' ', 'shape of ears' => ' ']]
而不是[Garfield => [ 'color of eyes' => 'green']]
我可以通过联接表item_properties和category_properties轻松地在mysql中获得预期的结果,但是我不知道如何对Eloquent和Laravel集合执行相同的操作。
雄辩中是否有类似于sql join的东西?
答案 0 :(得分:1)
您的描述有点难以理解。我假设您正尝试从items
的{{1}}中获得item_properties
?最好避免在Laravel中使用category
,而改为使用raw joins
。
现在,您的每个Model
都会创建一个关系(口才关系)。
然后您可以使用Model
https://laravel.com/docs/5.6/eloquent-relationships#eager-loading
希望您已阅读我发送给您的链接。
示例:
类别模型:
Eager Loading
项目模型:
public function items(){
return $this->hasMany('App\Item', 'category_id', 'id');
}
public function categoryProperties(){
return $this->belongsTo('App\CategoryProperty', 'category_id', 'id');
}
ItemProperty模型:
public function categories(){
return $this->belongsTo('App\Category', 'category_id', 'id');
}
public function itemProperties(){
return $this->hasMany('App\ItemProperty', 'item_id', 'id');
}
类别属性模型:
public function items(){
return $this->belongsTo('App\Item', 'item_id', 'id');
}
public function categoryProperties(){
return $this->belongsTo('App\CategoryProperty', 'property_id', 'id');
}
控制器:
public function itemProperties(){
return $this->hasMany('App\ItemProperty', 'property_id', 'id');
}
public function categories(){
return $this->belongsTo('App\Category', 'category_id', 'id');
}