从数据库中过滤记录,使其仅显示具有真实值的记录

Posted

技术标签:

【中文标题】从数据库中过滤记录,使其仅显示具有真实值的记录【英文标题】:Filtering records from a database so it only shows the records with a true value 【发布时间】:2021-07-17 10:10:36 【问题描述】:

这个概念很简单。我有一个索引页面,它显示表中的每条记录,但我想创建一个包含 2 个选项的下拉框(我的表中有一个字段分配了 1 或 0 值),1 用于过滤记录只显示有 1 的记录,另一个只显示有 2 的记录。有没有办法做到这一点?

我尝试过的是:

我的控制器:

   public function filter()
    
        $energys = Energy::all();
        $energys->filter(function ($energys) 
            return $energys->isredundant == '1';
        );
    

【问题讨论】:

你试过这里的递归函数吗?? Energy::all(); 会影响你的表现。 【参考方案1】:

为什么不使用模型中可用的 where 方法?

$energy = Energy::where('isredundant', true)->get();

这应该很适合您想要做的事情。

如果您仍然遇到问题,请考虑将数据库中的“isredundant”字段转换为布尔值,方法是将以下内容添加到您的 Energy 模型中:

protected $casts = [
    'isredundant' => 'boolean',
];

【讨论】:

问题是我的字段不是布尔值,而是tinyInt。那我怎么能在那里使用 where 子句呢? 那么它是一个整数,只需将“true”替换为 1 就可以了。在这种情况下,您也不需要模型中的铸件部分。 所以就在控制器中,我是否还需要创建一个全新的视图,或者仍然可以使用索引视图? 您可以使用任何您想要的视图。你把它放在控制器中,它会给你一个能量对象的集合,你可以在视图中循环。只需返回 view('index', ['energy' => $energy]);并且应该工作得很好。 在路线中,我需要创建 2 条路线吗?一个用于一个选择,一个用于另一个?

以上是关于从数据库中过滤记录,使其仅显示具有真实值的记录的主要内容,如果未能解决你的问题,请参考以下文章

过滤现有项目组,使其仅包含符合某些条件的文件

通过具有最大列值的记录过滤 Django 查询

Bigquery - 如何过滤具有特定条件的记录

删除数据库现有记录,同时将值从一行分配给具有唯一值的另一行

SQL 加入 MS ACCESS 中的最新记录

根据 CSV 记录从 Spark 数据帧中过滤一些数据