我刚刚开始与Laravel合作并认为它是一个非常好的框架。 但是有很多东西需要学习,我可以在用户指南中找到除了这部分之外的所有内容:
我正在尝试从我的数据库中获取项目,它们使用与此表中的其他表item_catagories相关的类别ID进行排序: ID 名称 父
在我的网站网址中,我使用的是类别名称,而不是ID。
http://example.com/catagory/subcatagory
当子目录具有我想要搜索相关项目的值时。 我现在有这样的话:
if($subcategory){
$foo = ItemCategories::where(['group' => $category, 'name'=> $subcategory])
->get()[0]->id;
$data['products'] = Items::where('category_id', $foo)->get();
}
但必须有一种更简单的方法来获得相同的结果。
我希望有人可以帮助我理解我如何做得更好
修改
我忘了添加关系代码:
项目类:
public function categorie(){
return $this->hasOne('App\ItemCategories');
}
类别类:
public function items(){
return $this->belongsTo('App\Items');
}
答案 0 :(得分:0)
你可以使用Laravel Eloquent的关系。在您的类别模型上:
public function items() { return $this->hasMany('Items'); }
完成上述操作后,您可以$category->items
获取所有相关项目。
顺便提一下,当你这样做时:
->get()[0]
你可以这样做:
->first()
答案 1 :(得分:0)
如果您希望填充结果,可以采用以下方法:
$foo = ItemCategories::where(['group' => $category, 'name'=> $subcategory])->with('items')->first();