如何在Laravel 9中的Accessor/Mutator中使用if语句



在Laravel版本9上,我试图使用内部有if条件的访问器;简单地说,我需要为我的应用程序的postImage属性使用Accessor,只有当图像的路径不是以"http://"或"https://"开头时,(这样来自另一个网站的图像源就可以正确显示,而不会对其路径进行操作(,但根据Laravel 9 Accessor(和Mutator(的新语法,我找不到正确的方法。

我的Post模型中的postImage属性访问器(我知道这是错误的,但我正在努力找到正确的方法,这就是重点(:

protected function postImage():Attribute {
return Attribute::make(
get: fn ($value) =>
if (strpos($value, 'https://') !== FALSE || strpos($value, 'http://') !== FALSE) {
return $value;
}
return asset('storage/' . $value);
);
}

你能帮我找到合适的新方法吗?

使用其他函数格式(带返回(

protected function postImage():Attribute {
return Attribute::make(
get: function ($value) {
if (strpos($value, 'https://') !== FALSE || strpos($value, 'http://') !== FALSE) {
return $value;
}
return asset('storage/' . $value);
}
);
}

或者正确使用新格式(有值,无返回(

protected function postImage():Attribute {
return Attribute::make(
get: fn ($value) => (strpos($value, 'https://') !== FALSE || strpos($value, 'http://') !== FALSE) ? $value : asset('storage/' . $value),
);
}

最新更新