请问定义morphTo多态,在查询的时候 如果根据不同的模型来select不同的字段?

比如有个评论表comments定义了

public function commentable()
{
    return $this->morphTo();
}

news表的字段是id, title
article表的字段是id, sub_title
在查询comments记录的时候 如何用with查询,判断如果是 news模型则select id,title, 如果是article模型则select id, sub_title?

with(['commentable' => function ($query) {
    // 如果是news
    $query->select(['id', 'title']);
    // 否则如果是article
    $query->select(['id', 'sub_title']);
}])
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 2

我了解到的是不支持的,要么表字段都一样,要么就没办法了,查询单条数据的时候只能根据不同来源判断,然后if else 取不同的字段

3年前 评论

如果你只是为了显示方便,可以看下 修改器《Laravel 6 中文文档》 是否满足你的需求
news表模型

public function getTitleAttribute() {
        return $this->title;
}

article表模型

public function getTitleAttribute() {
        return $this->sub_title;
}

commentable->title

3年前 评论

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