我有一个名为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
会导致递归
我该如何解决这个问题?
答案 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;
}
}