如何在laravel 5.7中获取json值?

我在数据库中有两个表,package并且categories。


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 FUNCTION

pre.JSON_CONTAINS不存在(SQL:从“ packages”中选择*,其中

JSON_CONTAINS(category_id,'[“ 11”]'))


HUWWW
浏览 340回答 3
3回答

炎炎设计

有一个laravel方法可以做到这一点,更多细节在这里因此,请尝试:Packages::whereJsonContains('category_id', '11')->get();如果您的mysql版本不支持json_contains并且无法升级,请尝试以下查询:Packages::where('category_id', 'like', '%"11"%');

Helenr

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
打开App,查看更多内容
随时随地看视频慕课网APP