首页 > 解决方案 > 有没有办法在laravel中转换关系表属性?

问题描述

我有一个带有购物车功能的用户模型,它在加入三个表后返回所有购物车详细信息。我想将属性转换为 JSON 类型的数组。

示例:我有四个表userscartsitem_detail_informationsitem_details表,其中 item_details 表图片列是 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?

标签: laraveleloquentcastingquery-buildereloquent-relationship

解决方案


删除购物车方法中的所有连接(而不是通过 with 使用急切加载)。并在 ItemDetail 模型中转换属性。当您调用carst 方法时,它会自动拾取。希望对你有帮助


推荐阅读