Laravelのクエリビルダを使用してクエリを作成しようとしています。私は列'activities'
を持っている'packages'
という名前のテーブルを持っています。列には、シリアル化された配列として格納された値があります。たとえば、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();
少なくとも1つのアクティビティを持つすべての行を選択する必要があります。上記の例では、少なくとも2,5または1のアクティビティを持つすべての行を選択する必要があります。私は、Laravel Query Builderを使用してソリューションを欲しいです。助けてください。
私はこれが可能だとは思わないでserialize() functionを使用してシリアル化配列に配列を変換する必要があります。 varcharカラムの代わりにJSONを使用してみてください。 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