所以,我正在尝试执行:
$table = 'russian_names';
$nameType = 1;
$options = array(1, 2, 6);
$names = DB::table($table)
->where('name_type', $nameType)
->whereIn('options', $options)
->get();
当然,我在russian_names
中有一行:
id: 1
name: Vito
name_type: 1
options: 1,2,3,6
short_description: Short description for Vito.
description: Full description for Vito.
但我总是得到一个空数组。我试图将$options
中的每个元素转换为字符串,但仍然没有结果。此外,我试图在没有whereIn
的情况下执行此查询,并且它可以正常工作。而且,当我执行时
select * from `russian_names` where `name_type` = 1 and `options` in (1, 2, 6)
在phpmyadmin 它完美无缺。有什么我想念的吗?
UPD :mysql查询日志显示此日志:
select * from `russian_names` where `name_type` = ? and `options` in (?, ?, ?)
看起来很正常,因为
select * from `russian_names` where `name_type` = ?
工作正常并向我显示结果数组。
答案 0 :(得分:0)
选项:1,2,3,6
WHERE options IN (1, 2, 6)
表示“查找options
值1
,2
或6
的行。不意思是“神奇地发现options
是一个CSV字符串,就好像它是一个数据数组”。你需要以另一种方式存储options
- 最有可能的是, - 很多种关系。