[英]Loop through Laravel model with two models
我正在尝试找出解决此问题的最佳方法。 我有两个模型,一个是“类别”,另一个是“库存”。 我想搜索一个类别,并且与该类别模型匹配的每个产品(库存)都将显示在限制为20页的搜索结果中。 我可以毫无问题地从$ cat获得$ category。 我只是不确定用清单模型遍历每个人的最简单方法。 口才可以吗? 我也不知道那会如何影响分页
public function showCategory($cat) {
$category = Categories::where('category', '=', $cat)->get();
$inventory = Inventory::where('sku', '=', $category)->paginate(20);
$image = Images::where('sku', '=', $category->sku)->first();
if (is_null($inventory)) {
return App::abort(404);
}
return View::make('inventory.category', array('pageTitle' => $category->category, 'inventory' => $inventory, 'category' => $category, 'image' => $image));
}
因此,如果category可以说足球作为其category,那么我希望每一个产品(库存)都等于category模型中相同的sku
类别
id name sku category
1 Blah 1234 soccer
2 Blah 2222 bball
3 Blah 3333 baseball
4 Blah 4444 soccer
5 Blah 5555 soccer
我想要收集的结果将从库存表中显示出类似的结果
库存
id name sku more_stuff_ineed
1454 Blah 1234 blah
43546 Blah 4444 blah
54567 Blah 5555 blah
基本上只要确保您的关系定义正确即可(我个人将其命名为库存模型产品,因为您是在处理产品,而不是库存..或可能是InventoryItem。)
假设您有一个类别模型和一个产品模型; 您可以这样定义模型:
class Product extends Eloquent {
public function category()
{
return $this->belongsTo('Category');
}
}
class Category extends Eloquent {
public function product()
{
return $this->hasMany('Product')
}
}
假设您的产品在其余数据中有一个名为“ category_id”的列,该列将与类别相关联。 在这种情况下,我们假设“一对多”关系。如果您决定要一个产品属于多个类别,则需要调查“多对多”关系,并有一个额外的第三张表来存储关系。
像这样定义模型后,就可以查询属于以下类别的产品:
$products = Product::where('category_id', $catId)->paginate(20);
确保您查看此处显示的有关口才关系的文档,并充分了解各种关系类型。 您需要有一个可靠的句柄,以确保正确定义了表和模型,当然,您的代码也使用正确的语法来查询它们。
ps:我注意到您以复数形式命名了您的模型。 通常,Eloquent期望的命名约定是带有PascalCase的单数模型和复数(小写)表名。 因此,对于我的示例,您的基础sql表将被称为“类别”和“产品”,而模型将被称为“产品”和“类别”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.