模型关联中绑定属性到父模型怎么实现

类似于tp框架的模型关联中绑定属性到父模型的功能

在laravel中要怎么实现呢

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 33
aab

laravel 应该是不支持的,如果你想按照指定的格式返回,高版本的可以看看 resource api 相关的内容

3年前 评论
kolin (楼主) 3年前

用修改器修改

3年前 评论
kolin (楼主) 3年前
laravelcc (作者) 3年前
kolin (楼主) 3年前
slpi1 3年前
自由与温暖是遥不可及的梦想

为何要绑定到父级 父级直接读子级不就好了

如果非要在父级有的话 那就是 定义访问器 修改器《Laravel 8 中文文档》 然后在直接去拿

3年前 评论
kolin (楼主) 3年前
自由与温暖是遥不可及的梦想 (作者) 3年前
kolin (楼主) 3年前
自由与温暖是遥不可及的梦想 (作者) 3年前
kolin (楼主) 3年前
自由与温暖是遥不可及的梦想 (作者) 3年前
kolin (楼主) 3年前

在laravel模块问tp :joy:

3年前 评论
kolin (楼主) 3年前
boolstone (作者) 3年前
kolin (楼主) 3年前
boolstone (作者) 3年前
kolin (楼主) 3年前
boolstone (作者) 3年前

可以看下tp的实现,自己再拔拉过来自己用

3年前 评论
kolin (楼主) 3年前

数据不应该是一个大的实体,而是有层次感的实体,同理,关系型数据库就是实体之间的关系,模型之间的关系,映射到ORM,但是你的功能可以在appends实现这,不过不推荐

参考:序列化《Laravel 8 中文文档》

3年前 评论
kolin (楼主) 3年前
沐伶风

定义了关系后,在获取器里可以这样获取吧

   public function  getNicknameAttribute()
    {
        return optional($this->parent)->nickname ?? '';
    }
3年前 评论

看了看上面的回复,中心思想《我们尽量不解决问题,我们解决提出问题的人》,把提出问题的人的思维掰弯,达到“解决提出问题的人”的目的

3年前 评论
kolin (楼主) 3年前
aab

datamap ORM 应该比较好的解决这样的问题,AR模式在 laravel 的场景中确实是按照表的结构来来划分模型的。不能够很方便的做到你说这种业务场景。

3年前 评论
kolin (楼主) 3年前

可在你的 Model 基类新增一个方法:

    /**
     * 格式化为一个扁平的数组
     *
     * @return array
     */
    public function toCollapse()
    {
        $result = $this->attributesToArray();
        foreach ($this->relationsToArray() as $relations => $item) {
            foreach ($item as $k => $v) {
                isset($result[$k]) && $k = $relations . '_' . $k;
                $result[$k] = $v;
            }
        }
        return $result;
    }

调用:

$brand = Brand::with('tran')->find(9);
dd($brand->toCollapse());

得到类似输出:

array:11 [
  "id" => 9
  "icon" => ""
  "created_at" => 1647844552
  "updated_at" => 1647844552
  "tran_id" => 59
  "brand" => "BMW"
  "first_letter" => "B"
  "brand_id" => 9
  "language" => "en"
  "tran_created_at" => 1648281558
  "tran_updated_at" => 1648281558
]
3年前 评论

我也想问,有解决方案了吗

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!