this is my Category model:
JavaScript
x
/**
* @var array
*/
protected $guarded = ['id'];
public function media()
{
return $this->belongsTo(Media::class);
}
public function getMediaAttribute()
{
return 'Foo';
return ( ! is_null($this->media))
? $this->media
: '/products/default/thumb.jpg';
}
and when i call it in route for get all object like this:
JavaScript
return AppCategory::with('media')->get();
it seems accessor not work and i can’t get ‘Foo’ in category’s media object
Advertisement
Answer
You can use withDefault()
:
JavaScript
public function media()
{
return $this->belongsTo(Media::class)
->withDefault(['url' => '/products/default/thumb.jpg']);
}
When there is no result, it returns a Media
instance with the given attributes.