如何使用关系和一些逻辑附加列 db 结果

Posted

技术标签:

【中文标题】如何使用关系和一些逻辑附加列 db 结果【英文标题】:How to appending a column db result with relation and some logic laravel 【发布时间】:2021-07-24 13:57:16 【问题描述】:

我这里有个问题,我想从关系的结果中添加一列,即百分比列,该列是pagebook / pageread * 100的结果 这是我想要的结果数据库

"id": 2,
    "id_book": 2,
    "id_user": 2,
    "pageread": 120,
    "books": 
                "id": 2,
                "pagebook":125
             
    "percentage":96

这是我在控制器中的代码

$book= Read::with('books.authors')->where('id_user',$user->id)->get();

这是我在模型中的代码

public function books()
    
        return $this->belongsTo(Book::class,'id_book','id');
    

【问题讨论】:

查看资源:laravel.com/docs/8.x/eloquent-resources#introduction 他们允许您包含此类信息 【参考方案1】:

你可以在模型中做到这一点:

class YourModel ...
    protected $appends = ['percentage'];
    public function getPercentageAttribute()
    
        return /* the calculation that you need */
    

【讨论】:

如何将参数 book->pagebook 和 pageread 发送到 getPercentageAttribute 进行计算? @Newbie123 与您在控制器或其他任何地方所做的相同【参考方案2】:
 protected $appends = ['percentage'];
    public function getPercentageAttribute()
    
        $read= $this->pageread;
        $book= $this->books->pagebook
        return $read/$book*100


    

【讨论】:

以上是关于如何使用关系和一些逻辑附加列 db 结果的主要内容,如果未能解决你的问题,请参考以下文章

如何根据单独列中的月份和年份参数对 DB2 结果进行排序

如何在 IBM DB2 中的导出结果中也包含列标题

如何通过从结果中减去数字来计算嵌套关系和附加字段

如何使用 FluentNHibernate N:N 映射与附加属性的关系

如何在laravel 5中的关系列上使用“有”和分页

如何将表与中间表和附加相关列spring hibernate mvc连接起来