有没有办法在 laravel 中转换关系 table 属性?
Is there any way to cast a relationship table attribute in laravel?
我有一个带有购物车功能的用户模型,在加入三个 table 后 returns 所有购物车都详细说明。我想将属性转换为 JSON 类型的数组。
示例: 我有四个 table users, carts, item_detail_informations,并且 item_details tables 其中 item_details table 图片栏是JSON类型。我想将图片 JSON 数据转换为数组。
我的购物车功能是这样的。
public function carts()
{
return $this->hasMany('App\Models\Cart')
->join('item_detail_informations', 'carts.item_detail_information_id','=','item_detail_informations.id')
->join('item_details', 'item_detail_informations.item_detail_id','=','item_details.id')
->join('items', 'item_details.item_id','=','items.id')
->select('carts.user_id','carts.item_detail_information_id','item_detail_informations.size','item_detail_informations.price','item_detail_informations.item_detail_id', 'item_details.picture','item_details.item_id')
;
}
我正在尝试像这样投射图片属性。
protected $casts = [
'item_details.picture' => 'array',
];
但它不起作用。有没有办法把图片属性转成JSON?
删除 carts 方法中的所有连接(而不是通过 with 使用预先加载)。并在 ItemDetail 模型中转换属性。当您调用 carst 方法时,它会自动拾取。希望对您有所帮助
您需要改用eager loading
我有一个带有购物车功能的用户模型,在加入三个 table 后 returns 所有购物车都详细说明。我想将属性转换为 JSON 类型的数组。
示例: 我有四个 table users, carts, item_detail_informations,并且 item_details tables 其中 item_details table 图片栏是JSON类型。我想将图片 JSON 数据转换为数组。
我的购物车功能是这样的。
public function carts()
{
return $this->hasMany('App\Models\Cart')
->join('item_detail_informations', 'carts.item_detail_information_id','=','item_detail_informations.id')
->join('item_details', 'item_detail_informations.item_detail_id','=','item_details.id')
->join('items', 'item_details.item_id','=','items.id')
->select('carts.user_id','carts.item_detail_information_id','item_detail_informations.size','item_detail_informations.price','item_detail_informations.item_detail_id', 'item_details.picture','item_details.item_id')
;
}
我正在尝试像这样投射图片属性。
protected $casts = [
'item_details.picture' => 'array',
];
但它不起作用。有没有办法把图片属性转成JSON?
删除 carts 方法中的所有连接(而不是通过 with 使用预先加载)。并在 ItemDetail 模型中转换属性。当您调用 carst 方法时,它会自动拾取。希望对您有所帮助
您需要改用eager loading