我想在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 Query Builder的解决方案。请帮忙。
我不认为这是可能的使用serialize() function数组转换成连载阵列。也许你应该尝试使用JSON来代替varchar列。 https://laravel.com/docs/5.5/queries#json-where-clauses –
可能的重复[我如何从序列化字段在mysql数据库中搜索?](https://stackoverflow.com/questions/24508164/how -do-i-search-from-serialize-field-in-mysql-database) – AZinkey
你应该将这些活动保存为逗号分隔值,例如2,5,1,而不是序列化字符串 – AZinkey