请问定义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']);
}])
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

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

3年前 评论

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

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

article表模型

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

commentable->title

3年前 评论

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