【发布时间】:2019-12-08 15:46:34
【问题描述】:
为了提高性能,我尝试只创建一个对 db 的查询并在视图刀片中显示多个 foreach。为了产生这个结果,我的方法是使用查询生成器和 selectRaw 来创建过滤器。
我当前的代码:
$totals = DB::table('product')->select('productName','sellingPrice','productSpecification')
->selectRaw("(case where categoryId = '177' then 1 end) as computers")
->selectRaw("(case where categoryId = '31388' then 1 end) as cameras")
->selectRaw("(case where categoryId = '9355' then 1 end) as mobiles")
->get();
}
这个想法是在刀片视图中以以下方式使用 selectraw:
@foreach ($totals->computers as $productcomputers)
@foreach ($totals->cameras as $productcameras)
@foreach ($totals->mobiles as $productmobiles)
我尝试了该方法,但收到错误:
SQLSTATE[42000]:语法错误或访问冲突:1064 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在 'where 附近使用正确的语法 categoryId = '177' then 1 end) 作为计算机
有什么建议可以在 laravel 中生成一个带有多个 foreach 的查询或解决当前的方法吗?
brgds,
【问题讨论】:
-
您希望在这里得到
computers、cameras和mobiles的值? -
@Rwd 的想法是对多个 foreach 仅使用一个查询。现在我有一个视图,对同一个表有多个查询,每个查询产生一个 foreach。我想创造更好的表现。
-
@Rwd 我从 Reinik 那里获得了使用条件 reinink.ca/articles/…987654321@ 计算总数的想法
-
所有这些都是聚合,例如
counts无论如何你都不会循环。 -
@Rwd 好的,谢谢。那是我的问题,是否有可能解决这种方法或创建一种新方法。我将朝着不同的方向努力。非常感谢!