报错 Call to a member function foo on string 怎么处理

我用laravel-admin上传图片的时候会在目录下生成一张xxxx-106.png的缩略图,这张图没有存在数据库里,但是实际存在的,我想在blade调用的时候处理一下,所以我在model里写了:

public function coverSmall($val)
{
    $ext = "." . substr(strrchr($val,'.'),1);
    $filename = str_replace($ext,"-106" . $ext, $val);
    return $filename;
}

然后,我想在blade里这么调用:

{{ $testpsy->cover->coverSmall() }}

但是报错Call to a member function coverSmall() on string,这要怎么处理呢?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

应该是这样:{{ $testpsy->coverSmall($testpsy->cover) }},但一般建议这样做: 在模型里面添加:

public function getCoverSmallAttribute()
{
    $ext = "." . substr(strrchr($val,'.'),1);
    return str_replace($ext,"-106" . $ext, $val);
}

然后blade里面调用:

{{ $testpsy->cover_small }}
4年前 评论
wongvio (楼主) 4年前
讨论数量: 4

应该是这样:{{ $testpsy->coverSmall($testpsy->cover) }},但一般建议这样做: 在模型里面添加:

public function getCoverSmallAttribute()
{
    $ext = "." . substr(strrchr($val,'.'),1);
    return str_replace($ext,"-106" . $ext, $val);
}

然后blade里面调用:

{{ $testpsy->cover_small }}
4年前 评论
wongvio (楼主) 4年前

dump($testpsy->cover) 可以把这个打印出来看看。

4年前 评论

@tsin 有个问题,这么写CoverSmall是不是要是数据库里的字段,但是这个的实际字段是cover,这么处理以后,要用原始像素的图咋办。。。

4年前 评论

@wongvio 相当于另外制造了一个字段,不影响原来的。

4年前 评论
wongvio (楼主) 4年前
tsin (作者) 4年前
wongvio (楼主) 4年前
tsin (作者) 4年前
wongvio (楼主) 4年前

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