簡體   English   中英

將MySQL json字段轉換為Laravel 5.5中的對象

[英]Convert mysql json field to object in Laravel 5.5

我在Mysql中有此表,詳細信息列是json類型。 樣本表捕獲

這是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,我如何將詳細信息字段轉換為同一查詢中具有idorder_id字段的對象?

編輯

現在,我得到了從JSON到對象的轉換,插入帶有json_decodeforeach並從模型中刪除了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'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM