【发布时间】:2018-11-05 19:24:57
【问题描述】:
我想收集名称在数组中的所有标签的 id。为此,我使用whereIn,如下所示:
$tags = Category::whereIn('name', $tag_names)->pluck('id')->toArray();
我工作得很好,但我没有一个选项(据我所知)使whereIn 的运算符不区分大小写。
$tag_names 是一个标签名称数组,具有任意大小写。
'name' 是保存数据库中标签名称的列,其特定的大小写可能与$tag_names 中的不匹配。
Categorytable 的我的 postgresql 架构是:
CREATE TABLE categories (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
description TEXT,
num_posts INTEGER DEFAULT 0 NOT NULL
);
【问题讨论】:
-
你可以试试
whereIn('LCASE(name)',strtolower($tag_names)) -
@vivek_23 首先,第二个参数应该是
array_map('strtolower', $tag_names)。其次,第一个参数会引发 Postgresql 错误,即使我尝试使用lower而不是LCASE。无论如何,感谢您的帮助! -
抱歉,我需要一些咖啡。顺便说一句,我在我的机器上检查了它,它确实工作正常。
标签: php laravel postgresql eloquent laravel-query-builder