You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8如何筛选展示数据库中符合特定字段值的所有文章

解决方案

Laravel中数据筛选的最佳实践是在控制器查询阶段完成条件过滤,既符合MVC分层逻辑,也能避免查询冗余数据导致性能浪费,具体修改方法如下:

方法1:控制器直接加筛选条件(推荐)

找到你向Blade视图传递$donations变量的控制器方法,将原本的全量查询代码:

$donations = Donation::all();

修改为带where条件的查询,直接从数据库层面过滤出未预留的条目:

$donations = Donation::where('is_reserved', 0)->get();

修改完成后不需要改动现有Blade代码,循环渲染的就只有is_reserved = 0的符合要求的条目。

方法2:模型添加本地作用域(适合多场景复用)

如果「查询未预留条目」的逻辑会在多个页面/接口用到,可以给Donation模型添加本地作用域实现代码复用:

  1. 打开app/Models/Donation.php文件,在模型类中添加如下方法:
public function scopeNotReserved($query)
{
    return $query->where('is_reserved', 0);
}
  1. 控制器查询时直接调用作用域即可:
$donations = Donation::notReserved()->get();

临时方案:Blade层面过滤(不推荐)

如果暂时不方便修改控制器代码,也可以直接在Blade循环中利用集合的where方法做过滤,缺点是会先查询所有数据再在内存中过滤,数据量大时性能较差:
将你现有Blade代码中的循环行修改为:

@foreach ($donations->where('is_reserved', 0) as $donation)

其余代码保持不变即可。

内容的提问来源于stack exchange,提问作者Antony_Web

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:15:03