Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel mysql json数据选择_Php_Mysql_Laravel_Laravel 5.2_Mysql 5.7 - Fatal编程技术网

Php Laravel mysql json数据选择

Php Laravel mysql json数据选择,php,mysql,laravel,laravel-5.2,mysql-5.7,Php,Mysql,Laravel,Laravel 5.2,Mysql 5.7,我得到了一个运行在mysql 5.7.11上的数据库,并将大量数据放入一个带有JSON列的表中。我收到了一个像这样的原始查询 select * from `note` where `note_structure_id` = 3 and JSON_EXTRACT(LCASE(data), '$._letter') = 'a' and JSON_EXTRACT(data, '$._number') = 1 在sequel pro或phpmyadmin中运行,它给了我一个我所期望的结果 {"_

我得到了一个运行在mysql 5.7.11上的数据库,并将大量数据放入一个带有JSON列的表中。我收到了一个像这样的原始查询

select * from `note` 
where `note_structure_id` = 3 
and JSON_EXTRACT(LCASE(data), '$._letter') = 'a' 
and JSON_EXTRACT(data, '$._number') = 1
在sequel pro或phpmyadmin中运行,它给了我一个我所期望的结果

{"_letter": "A", "_number": 1}
我用laravel构建的同一个查询没有任何结果。空数组。我的代码用于构建相同的查询,我得到了这种代码

$result = \DB::table( 'note' )->where( 'note_structure_id', $structureId );

if( is_array( $query ) ) {
    if( isset( $query['where'] ) ) {
        foreach( $query['where'] AS $field => $value ) {
            if( is_numeric( $value ) ) {
                $result = $result->where( \DB::raw( "JSON_EXTRACT(data, '$._{$field}')" ), '=', $value );
            }
            else {
                $result = $result->where( \DB::raw( "JSON_EXTRACT(LCASE(data), '$._{$field}')" ), '=', strtolower( $value ) );
            }
        }
    }
}

dd($result->get());
有人知道我的代码有什么问题吗。我尽一切可能去修复它,但没有结果


谢谢

看到您修复了它,但为什么不以更传统的方式将其作为原始查询执行呢。您的代码目前不太可读

$results = DB::select('select * from `note` where `note_structure_id` = :id and JSON_EXTRACT(LCASE(data), `$._letter`) = :a and JSON_EXTRACT(data, `$._number`) = :number', ['id' => 3, 'a' => 'a', 'number' => 1]);

经过研究得出结论,我需要在JSON_EXTRACT()周围添加JSON_UNQUOTE(),它就像一个符咒!