从数据库中过滤记录,使其仅显示具有真实值的记录
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 条路线吗?一个用于一个选择,一个用于另一个?以上是关于从数据库中过滤记录,使其仅显示具有真实值的记录的主要内容,如果未能解决你的问题,请参考以下文章