gpt4 book ai didi

php - 从 hasMany 关系中获取所有对象并分页

转载 作者:行者123 更新时间:2023-12-03 01:04:05 24 4
gpt4 key购买 nike

在我的 Laravel 应用程序中,我有一个类别列表页面。当用户单击某个子类别时,我想列出所有产品并对该结果使用分页。目前,我已经借助子类别 ID 列出了与该子类别相关的所有产品:

public function subcategoryListing($slug){
$products = Subcategory::find($idofSubcat)->products;
return view('pages.subcategorylisting')
->with(array(
'products' => $products,
));
}

此结构涉及三个类:类别子类别产品。它们的声明如下:

类别

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\Relation;
use App\Subcategory;

class Category extends Model
{
protected $table = 'category';

public $timestamps = false;

public function subCategory(){
return $this->hasMany('App\Subcategory', 'category_id');
}
}

子类别

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Subcategory extends Model
{
protected $table = 'subcategory';

public $timestamps = false;

public function products(){
return $this->hasMany('App\Products');
}
}

产品

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Products extends Model
{
protected $table = 'products';
}

对于每个模型类,我都有一个表,其结构如下:

Category
- id
- category_name

SubCategory
- id
- category_id
- subcategory_name

Products
- id
- subcategory_id
- product_title
- description
- price

我想要的是对我的页面中的查询检索到的结果进行分页。有没有更好的方法来获取与子类别关联的产品并对它们进行分页?

最佳答案

在 Eloquent(Laravel 的 ORM)中,当您将关系作为属性调用时($subCategory->products),它会根据关系类型返回相关对象或对象集合(属于, 有很多, ...)。相反,如果您将其作为函数调用 ($subCategory->products()),您将获得一个 QueryBuilder 实例。

引用http://laravel.com/docs/5.1/eloquent-relationships#querying-relations ,在关系方法与方法部分下。动态属性了解更多详细信息。

无论如何,使用关系方法,您可以为您的集合调用paginate()。然后,考虑到这一点,您可以稍微更改代码以获得您想要的:

public function subcategoryListing($slug) {

// I'm supposing here that in somewhere before
// run the query, you set the value to $idofSubcat
// variable

$products = Subcategory::find($idofSubcat)->products()->paginate();
return view('pages.subcategorylisting')
->with(array(
'products' => $products,
));
}

关于php - 从 hasMany 关系中获取所有对象并分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32492966/

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