繁体   English   中英

通过两个模型遍历Laravel模型

[英]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.

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