【发布时间】:2018-03-05 23:58:45
【问题描述】:
这让我很难过。我正在尝试使用按位运算符 & 基于 productmask 字段过滤 $ages=Ages::all();
(代码应该是不言自明的)
我试过了
@foreach($ages->where('productmask', '&', 2) as $option)
和
@foreach($ages->filter(function($i){return ((int)($i->productmask & 2)); }) as $option)
和
@foreach($ages->filter(function($i){return ((int)($i->productmask & 2) == 2); })->values() as $option)
当 productmask = 3 时没有任何工作,但当 productmask 正好为 2 时工作。
我在这里有什么选择(不是双关语)?为什么这不起作用?
如果我执行\DB::whereRaw,我很确定它会起作用(因为我可以对 Db 运行它并且它起作用并且我得到 2 和 3 条目):
SELECT * from ages WHERE productmask&2
但是在这里它绕过了流利并在视图中访问数据库?不好的形式。
任何使用位掩码的人都遇到过这种情况吗?
提前致谢。
【问题讨论】:
标签: laravel bitwise-operators fluent laravel-eloquent bitmask