繁体   English   中英

如何在laravel 5.7中获取json值?

[英]How to get json value in laravel 5.7?

我在数据库中有两个表, packagecategories

package具有一个category_id字段,其中包含这种格式的数据["1","11"]并以复选框的形式显示categories数据。

现在,我想所有的数据package ,其中category_id等于categories id

这是我的代码:

public function archive_packages(Request $request, $slug){
    $title='Archive Packages';
    $para='';
    $slugs='archive-packages';
    $categoryRow = Category::where('slug',$slug)->first();
    $categoryID = $categoryRow->id;
    $package = Packages::whereRaw('JSON_CONTAINS(category_id, \'["11"]\')')->get();
    dd($package);
    return view('pages.archive-packages',compact('title','para','slugs','package'));
}

我收到以下错误:

SQLSTATE [42000]:语法错误或访问冲突:1305功能
pre.JSON_CONTAINS不存在(SQL:从“ packages”中选择*,其中
JSON_CONTAINS(category_id,'[“ 11”]')

有一个laravel方法可以做到这一点,更多细节在这里

因此,请尝试:

Packages::whereJsonContains('category_id', '11')->get();

如果您的mysql版本不支持json_contains并且您不能升级它,请尝试以下查询:

Packages::where('category_id', 'like', '%"11"%');

PHP具有内置方法json_encode(),可轻松将数组编码为JSON字符串格式。 我们可以实现为:我们也可以在laravel中使用它

$ array = array('笔记本电脑','耳机','鼠标'); 返回json_encode($ array);

但是,较新版本的Laravel也有自己的json()方法,该方法会自动设置相关的Content-Type并编码JSON数据:

$ array = array('笔记本电脑','耳机','鼠标'); 返回response()-> json($ array);

JSON示例:

[{“ id”:11,“ first_name”:“ Anthony”,“ last_name”:“ Ross”,“ language”:“ english”,“ grade”:1}]

如果您在json中有多个值,则可以尝试执行类似的循环,

foreach($target as $target_result){
  echo $target_result->id;
}

如果您只有一条记录,请尝试,

$target = Var::where('first_name', '=', $request->input('jsonArr'))->first();
return $jsonArr->id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM