如何在Laravel 5中为模型中的现有字段定义访问器?

时间:2016-06-24 03:02:23

标签: php laravel laravel-5 laravel-5.2

我有一个名为Book的模型,用于名为books的表,其中有一个名为cover_image的字段。

但是,我想为字段cover_image定义一个访问者,而不是仅仅检索默认值。

这就是我尝试这样做的方式:

class Book extends Model {

    public function getCoverImageAttribute() {

         if ($this->cover_image === null) { // Not sure how to check current value?
               return "a.jpg"
         }
         return $this->cover_image; 
    } 

}

然而,上述当然不起作用,因为再次调用$this->cover_image会导致递归

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

您必须检查属性:

class Book extends Model {

    public function getCoverImageAttribute() {
         return $this->attributes['cover_image'] ?? "a.jpg"; 
    } 

}

这样您也可以正常使用$book->cover_image

我相信以下示例也适用:

class Book extends Model {

    public function getCoverImageAttribute($value) {    

         return is_null($value) ? 'a.jpg' : $value; 
    } 

}