gpt4 book ai didi

php - Laravel mysql json 数据选择

转载 作者:行者123 更新时间:2023-11-29 02:51:06 28 4
gpt4 key购买 nike

我有一个在 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]);

关于php - Laravel mysql json 数据选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35589146/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com