关于这一段代码有点疑惑

  public function getIsFavoritedAttribute()
    {
        return $this->isFavorited();
    }

为什么会定义一个访问器,然后返回的是他自身。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
Epona
最佳答案

$this->isFavorited(); 是Model内的另一个方法吧。

4年前 评论
讨论数量: 6

可以使用$model->is_favorited

4年前 评论
Epona

$this->isFavorited(); 是Model内的另一个方法吧。

4年前 评论

isFavorited() 里面应该是写了 $this->xxx === boolean,这么写可能是想达到$cast属性的效果。

4年前 评论

laravel 很多方法很 魔术的, 建议看下相关的源码 :smiley:

4年前 评论

访问器本身就是当你需要取数据的时候,做一些自定义操作,比如特殊的类型转换。

当然 is_favorited 可能并不是一个真正存在的字段,而是一个由其他字段虚拟出来的结果。

比如可能是 status 字段,当 status 值为 3 时,表示 is_favorited

但是如果用 status 是否等于 3 这样的判断,会让后面维护业务层代码的人员懵逼(如果没有任何文档和注释的话),所以这种语义化的方式也是便于后期的团队协作!

这里引用一句话:“专业就是让与你共事的人感到舒服”,当别人 review 代码时,不不至于感叹 what the fuck

4年前 评论

谢谢大家的回复,我在提问的时候确实没有分清方法和属性的概念。才会提出这样的问题,导致大家以为我想问的是访问器是什么意思。其实这刚好是一个同名的方法。我自己可能没有看到这个方法。也没有主动去 github 里查看,感觉自己挺蠢的。谢谢大家的回复。

    /**
     * Determine if the current reply has been favorited.
     *
     * @return boolean
     */
    public function isFavorited()
    {
        return ! ! $this->favorites->where('user_id', auth()->id())->count();
    }
4年前 评论

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