与Laravel在

时间:2016-10-19 21:34:35

标签: sql database laravel

所以,我正在尝试执行:

$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` = ?

工作正常并向我显示结果数组。

1 个答案:

答案 0 :(得分:0)

  

选项:1,2,3,6

WHERE options IN (1, 2, 6)表示“查找options126的行。意思是“神奇地发现options是一个CSV字符串,就好像它是一个数据数组”。你需要以另一种方式存储options - 最有可能的是, - 很多种关系。