Laravel MySQL从嵌套的JSON列中选择

时间:2019-03-03 09:10:43

标签: mysql json laravel

我在MySQL数据库中有JSON列。

控制器

这是我的示例代码,该代码从表中获取selected_products并将其作为JSON返回,我打算将其用于图表数据。 我想做的是获得name中的product

$products = Order::select('selected_products')->get();

return response()->json(['test_data' => $products], 200);

JSON响应可能查看here

如果我这样做:

$products = Order::select('selected_products->name')->get();

返回错误:

  

SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的orders'中的'>'$。“ name”'附近使用(SQL:选择selected_products->'$。来自orders的“名称”'

我希望有人能帮助我。谢谢。

2 个答案:

答案 0 :(得分:1)

为什么不循环遍历$products数组?

$porductsNames = array();

$products = Order::select('selected_products')->get();

foreach ($products as $product){
   foreach($product('selected_products') as $p){
        $productsNames[] = $p['name'];
   }
}

// Then you can use it
dd($productsNames);

答案 1 :(得分:0)

将$ products替换为以下行并检查其是否有效。

$products = Order::all('selected_products');

如果不可能,请使用如下所示的sql语句

$products=DB::select("SELECT selected_products from orders")