首页 > 解决方案 > 过滤关系,基于整数数组

问题描述

我的模型有很多选项,单个选项的多个字段将值存储为整数数组

我想根据包含的整数进行过滤。在 php 中类似于in_array(),但数组存储在 db 中,数字是关键字。

$productsWithOptions = [
        {
            "id":2,
            "name":"mac 2",
            "options":[
                {
                    "id":4,
                    "price":99.9,
                    "product_id":2,
                    "colors":"[4,3,2]",
                    "sizes":"[5,3,2]"
                },
                {
                    "id":5,
                    "price":99.9,
                    "product_id":2,
                    "colors":"[4,4,5]",
                    "sizes":"[1,2,2]"
                },
                {
                    "id":7,
                    "name":"mac 7",
                    "options":[
                        {
                            "id":19,
                            "price":99.9,
                            "product_id":7,
                            "colors":"[6,3,4]",
                            "sizes":"[5,2,5]"
                        },
                        {
                            "id":20,
                            "price":1999.9,
                            "product_id":7,
                            "colors":"[1,6,6]",
                            "sizes":"[5,6,2]"
                        },
                        {
                            "id":21,
                            "price":1999.9,
                            "product_id":7,
                            "colors":"[4,6,5]",
                            "sizes":"[5,2,2]"
                        }
                    ]
                }
            ]
$products = Product::whereHas('options', function (Builder $query) use ($arr) {
                $query->where('colors','like', "%2%" );
            })->get();

这就是选项表在 db 中的样子。

在此处输入图像描述

标签: phplaraveleloquent

解决方案


推荐阅读