时间戳转换器

如何通过分页获取 Laravel Eloquent 中的特定列?

日期:2023-02-16     浏览:317    
【中文标题】如何通过分页获取 Laravel Eloquent 中的特定列?【英文标题】:How to get specific columns in Laravel Eloquent with pagination? 【发布时间】:2019-04-01 12:10:57 【问题描述】:

我使用这个表架构:

Schema::create('forms', function (Blueprint $table) 
    $table->increments('id');
    $table->string('name', 255)->default('');
    $table->text('html')->nullable();
    $table->text('json')->nullable();

    $table->timestamps();
    $table->softDeletes();
);

这是模型:

class Form extends Model

    use SoftDeletes;

    protected $fillable = [
        'name',
        'html',
        'json'
    ];

    protected $hidden = ['created_at', 'updated_at', 'deleted_at'];

在控制器中,我想显示所有模型项目的列表,但只有 id 和 name 文件。现在我使用它,但它显示所有未隐藏的字段:

public function index() 
    return Form::->paginate(100);

此功能仅适用于表格名称列表。但这里是第二个显示表单数据以进行修改:

public function show(string $id) 
    $item = Form::findOrFail($id);

    return response()->json($item);

当然,最后一个函数需要显示所有字段(id、name、html 和 json)。

是否有任何最佳做法可以在 index() 函数中使用 paginate() 仅显示我需要的字段?

【问题讨论】:

【参考方案1】:

如果我没有错,那么希望您可以这样做以获取特定列以及分页:

return Form::paginate(100,['id','name',.....]);

【讨论】:

这是最简单的解决方案。谢谢!【参考方案2】:

如果我正确阅读了您的问题,您要做的是创建一个 Form 对象的集合,其中实际上在索引概览中检索到 id 和 name 字段。

您可以通过在控制器中创建一个新的集合实例来轻松做到这一点:

public function index() 
   // use the Eloquent select() function
   $forms = Form::select('id', 'name')->paginate(100);
   return $forms;

我个人会将该集合放入存储库模式中,以使其更易于缓存。 Here's a nice canonical reference Laravel 中的存储库模式。

在您的控制器上的显示功能中,您无需更改任何内容,因为 ID 仍然相同。

为了将来的参考,请记住 paginate 方法仅对调用它的集合进行分页,而不是对与特定模型相关的所有内容或该集合以外的任何内容进行分页。因此,如果您以任何方式创建一个新集合,并在该新集合上调用 paginate 方法,则只会对其中的任何内容进行分页。这是相当强大的东西! Here's the documentation reference.

【讨论】:

Form::all('id', 'name')->paginate(100) 因为这个原因不能工作:Collection::paginate does not exist,但 Form::select() 版本工作正常。谢谢! 啊,这很奇怪,我认为所有 Eloquent 函数都应该能够分页。还是删了。

相关文章

在 Eloquent 资源中使用分页会在 Laravel 中引发 Undefined Property $id 错误

{】在Eloquent资源中使用分页会在Laravel中引发UndefinedProperty$id错误【英文标题】:UsingpaginationinEloquentresourcethrowsUndefinedProperty$iderrorinLaravel【发布时间】:2019-05-2910:19:24【问题描述】:我正在尝试在Laravel5.7中构建一个应用程序,其...}

Laravel Eloquent 按孩子的长度排序,然后分页

{】LaravelEloquent按孩子的长度排序,然后分页【英文标题】:LaravelEloquentorderbylengthofchildrenthenpaginate【发布时间】:2021-12-1901:13:42【问题描述】:我有一个名为Topic的模型。我的话题有很多观点和很多cmets。有什么方法可以结合视图...}

通过 id 获取记录并使用 Laravel 和 eloquent 查询与“中间”的关系

{】通过id获取记录并使用Laravel和eloquent查询与“中间”的关系【英文标题】:gettingrecordsbyidandqueryingthererelationwith\'wherebetween\'usingLaravelandeloquent【发布时间】:2021-08-1722:44:40【问题描述】:我正在尝试从某个记录器在某个时间跨度...}

如何从 Laravel 8 Eloquent 中的嵌套关​​系中获取数据?

{】如何从Laravel8Eloquent中的嵌套关​​系中获取数据?【英文标题】:HowtogetdatafromnestedrelationshipinLaravel8Eloquent?【发布时间】:2021-12-3011:57:55【问题描述】:如何与eloquent建立深厚的关系?我正在尝试像这样显示数据:+---------------...}

如何从 laravel 的 eloquent 集合中获取外键

{】如何从laravel的eloquent集合中获取外键【英文标题】:Howtogetforeignkeyfromeloquentcollectioninlaravel【发布时间】:2021-09-0814:08:49【问题描述】:我的用户模型中有hasMany关系;/***Getthepostsfortheusers.*/publicfunctionposts()return$this->hasMany(Posts...}

Laravel Eloquent - 获取一行

{】LaravelEloquent-获取一行【英文标题】:LaravelEloquent-GetoneRow【发布时间】:2014-07-1811:52:15【问题描述】:这可能是一个简单的问题,但我无法弄清楚。我正在尝试通过电子邮件获取用户:$user=User::whereEmail($email)->get();但这会返...}

Laravel Eloquent:如何从连接表中仅获取某些列

{】LaravelEloquent:如何从连接表中仅获取某些列【英文标题】:LaravelEloquent:Howtogetonlycertaincolumnsfromjoinedtables【发布时间】:2013-01-2112:45:02【问题描述】:我在Eloquent中有2个连接表,即主题和用户。主题模型:publicfunctionuser()return$th...}

如何在 Laravel Eloquent ORM 中获取插入的多行数据

{】如何在LaravelEloquentORM中获取插入的多行数据【英文标题】:HowtogetthedataoftheinsertedmultiplerowsinLaravelEloquentORM【发布时间】:2017-04-0705:14:05【问题描述】:所以我设法使用laravelmodel::insert(array(...));一次保存多个数据示例数据array(0=&...}

如何从数组 eloquent laravel 中获取权限名称值

{】如何从数组eloquentlaravel中获取权限名称值【英文标题】:Howtogetpermissionnamevaluefromarrayeloquentlaravel【发布时间】:2020-12-1202:59:45【问题描述】:如果我的英语有点奇怪,我很抱歉,如果你不明白我的问题,请问我。所以,我想要...}

如何通过 laravel eloquent 模型 Laravel 5 加入三个表

{】如何通过laraveleloquent模型Laravel5加入三个表【英文标题】:HowtojointhreetablebylaraveleloquentmodelLaravel5【发布时间】:2016-01-2017:22:53【问题描述】:我在互联网上搜索了我的问题,但找不到答案。我在***上找到了一个教程,但对于我...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号