【发布时间】:2017-10-06 04:46:15
【问题描述】:
我正在尝试使用 Laravel 中的查询生成器编写查询。我有一个名为'packages' 的表,其中有一列'activities'。该列的值存储为序列化数组。例如a:1:{i:0;s:1:"2";}。现在我想通过比较“活动”列中的值来搜索表格。例如我将有一个数组$arr = array(0=>2, 1=>5, 2=>1) 我想将它与'activities' 列进行比较。
$query = DB::table('packages');
$query = $query->where('activities', $arr);
$packages = $query->get();
它应该选择至少有一个活动的所有行。即在上面的示例中,它应该选择所有活动中至少有 2,5 或 1 的行。我想要使用 Laravel 查询生成器的解决方案。请帮忙。
【问题讨论】:
-
我认为这是不可能的。也许您应该尝试使用 JSON,而不是 varchar 列。 laravel.com/docs/5.5/queries#json-where-clauses
-
您应该将这些活动保存在逗号分隔值中,例如 2,5,1 而不是序列化字符串