我在Mysql中有此表,详细信息列是json类型。
php - 将MySQL json字段转换为Laravel 5.5中的对象-LMLPHP

这是OrderDetails模型

class OrderDetail extends Model
{
    protected $casts = [
        'details' => 'array',
    ];
}


这是控制器

class HomeController extends Controller
{
    public function index()
    {
        $result = OrderDetail::where('details->options->size', 'L')
            ->limit(10)
            ->get();

        return view('home', compact(['result']));
     }
}


和主视图

@if($result->count())
    @foreach($result as $item)
        <li>{{ $item->details }}</li>
    @endforeach
@endif


我收到这个错误


  htmlspecialchars()期望参数1为字符串,给定数组(查看:/ *** / resources / views / home.blade.php)


但是,如果我从模型中删除受保护的$ casts [],它会向我显示JSON,我如何将详细信息字段转换为同一查询中具有id和order_id字段的对象?

编辑

现在,我得到了JSON到对象的转换,将foreachjson_decode插入并从模型中删除protected $casts[],是否有更好的方法呢?

class HomeController extends Controller
{
    public function index()
    {
        $result = OrderDetail::where('details->options->size', 'L')
            ->limit(10)
            ->get();

        foreach($result as $key => $item){
               $result[$key]->details = json_decode($item->details);
        }

        return view('home', compact('result'));
    }
}

最佳答案

compact函数中删除方括号

return view('home', compact('result'));

10-07 12:33
查看更多