我在MySQL数据库中有数据,表'user',列'attributes‘,json类型如下:
{"hp": {"base": 10}}我尝试使用laravel查询数据库json数据,如下所示:
$users = Users::where('attributes->hp->base', 10)->get();但是它返回空的结果。因此,我尝试使用以下命令来获取查询:
$users = Users::where('attributes->hp->base', 10)->toSql();它向我展示了如下查询:
select * from users where attributes->"$.hp.base" = ?现在,当我在MySQL命令行中使用该命令并执行以下命令时,它可以正常工作
select * from users where attributes->"$.hp.base" = 10因此,我尝试使用原生php:
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = 'select * from users where attributes->"$.hp.base" = 10';
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
var_dump($row);
}
} else {
echo "0 results";
}
mysqli_close($conn);它仍然显示0个结果。代码有什么问题?
发布于 2016-07-06 21:02:28
给萨蒂关于选择数据库的评论。所以原生PHP的答案是:
$conn = mysqli_connect($servername, $username, $password, $database);现在对于laravel版本,根据https://github.com/laravel/framework/issues/13232,它需要有DB::raw()
因此,laravel雄辩的版本将是:
$users = Users::where('attributes->hp->base', DB::raw(10))->get();发布于 2016-07-05 21:43:33
您好,请按如下所示更改您的查询
$sql = 'select * from users where attributes->"'.$.hp.base.'" = 10';https://stackoverflow.com/questions/38205002
复制相似问题