【问题标题】:LARAVEL query string of ids in array of ids [duplicate]LARAVEL查询ID数组中的ID字符串[重复]
【发布时间】:2019-02-08 13:11:13
【问题描述】:

我已将产品类别的 ID 保存为以逗号分隔的字符串 (例如'2,3,4,6')并且我有一个用户选择的类别数组(例如[1,3,4,5]),我想从数据库中使用雄辩的仅这些产品已选择类别。在示例中是包含 id 1 或 3 或 4 或 5 的产品。

我尝试了多种变化,但我认为我正在慢慢接近重点,但有一个问题。 我会这样做:

Products::where(function ($query) use ($filters) {
      $categories = implode(',', $filters['categories']); // gives me string with separated ids by comma same as in DB
      $query->where('categories', 'like', "%{$categories}%");
    });

但它需要带有逻辑“AND”的项目。我的意思是,如果我选择超过 1 个类别,则它希望产品同时具有两个选定类别,而不是我希望获得至少具有一个选定类别的所有产品

【问题讨论】:

    标签: php mysql database laravel eloquent


    【解决方案1】:

    在此使用 Wherein

    例如-

    $category = [1,2,3,4,5];
    $query->WhereIn('categories', $category); // use this
    

    【讨论】:

    • 我试过了,似乎它并不总是有效。所以我放弃了它,但也许是我的错,所以我会再检查一次。
    • 如果它找到任何 id,它应该可以工作。如果没有,它将无法正常工作
    • 不,它对我不起作用。我很少有包含 id = 3 的记录(例如'1,2,3','3,4')。所以我的过滤器看起来是: $category = [3];它返回给我的是空数组而不是 5 个结果。
    • 当可搜索的 id 不在字符串的首位时,WhereIn 根本不适合我
    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多