gpt4 book ai didi

php - 使用两个模型循环 Laravel 模型

转载 作者:行者123 更新时间:2023-11-30 00:05:40 25 4
gpt4 key购买 nike

我正在尝试找出解决这个问题的最佳方法。我有两个模型,一个是类别,另一个是库存。我想要搜索一个类别,并且与该类别模型匹配的每个产品(库存)显示在搜索结果中,每页最多 20 个。我可以毫无问题地从 $cat 获取 $category 。我只是不确定使用库存模型循环遍历每个模型的最简单方法。 Eloquent 有简单的方法吗?我也不知道这会如何影响分页

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));
}

因此,如果类别有足球作为其类别,我希望每个等于类别模型中相同 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

最佳答案

基本上只需确保您的关系定义正确(我个人会将 Inventory 模型命名为 Product,因为您正在处理的是 Product,而不是 Inventory.. 或者可能是 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);

请务必查看有关 Eloquent 关系的文档,如 here 所示。 ,并充分理解不同类型的关系。您需要对其进行可靠的处理,以确保正确定义表和模型,当然,您的代码使用正确的语法来查询它们。

附:我注意到你用复数形式命名你的模型。通常,Eloquent 期望的命名约定是使用 PascalCase 的单数模型和复数(小写)表名称。因此,我的示例中的基础 sql 表将称为“类别”和“产品”,而模型将称为“产品”和“类别”。

关于php - 使用两个模型循环 Laravel 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24577394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com