我在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
的“名称”'
我希望有人能帮助我。谢谢。
答案 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")