laravel 模型Model 数组与json 自动转换
数据库表c_sale_receipts 字段sale_order_nos 是 json 类型
若原本字段保存的是被序列化的 JSON,则 array 类型转换将会特别有用。
例如,在你的数据库中有一个 JSON 或 TEXT 字段类型,其包含了 被序列化的 JSON,且对该属性添加了 array 类型转换。
当你在 Eloquent 模型上访问该属性时,它将会被自动反序列化成一个 PHP 数组:
<?php namespace App\Models\Prod; use App\Models\User; use Illuminate\Database\Eloquent\Model; class SaleReceipt extends Model { // protected $fillable = ['type','flag', 'order_no', 'sale_order_no', 'sale_order_nos', 'order_money', 'pay_money', 'receipt_rate', 'receipt_date', 'currency_rate', 'bank_fee', 'bank_id', 'bank_info', 'note', 'status', 'manage_id','manage_name','out_trade_no','trade_no','trade_status','trade_time','notify_data','pay_method','refund_id','refund_bank_info']; //设置sale_order_nos 为array,则sale_order_nos 为数组保存时候,会自动转换为json 存储进去,取的时候回自动转换为array数组 protected $casts = ['sale_order_nos' => 'array']; public function manage() { return $this->hasOne(User::class, 'id', 'manage_id'); } }
一旦类型转换被定义,则可以访问 sale_order_nos属性,它将会自动把 JSON 反序列化成一个 PHP 数组。
当你设置 sale_order_nos属性的值时,指定的数组将会被自动序列化成 JSON 以便进行保存:
$saleReceipt = App\SaleReceipt::find(1); $sale_order_nos = $user->sale_order_nos; $sale_order_nos ['key'] = 'value'; $saleReceipt->sale_order_nos = $sale_order_nos $saleReceipt>save();