首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >急切加载介质Url - laravel-medialibrary

急切加载介质Url - laravel-medialibrary
EN

Stack Overflow用户
提问于 2020-08-21 14:59:27
回答 1查看 498关注 0票数 0

我正在尝试从Spatie的laravel-medialibrary加载所有标识类型的urls:

然后,他们将使用json-response。

理想情况下,库的工作方式如下:

代码语言:javascript
复制
# Get all clients with url to logotype (small)`
    Client::with('media.logotype', function ($q) {
        $q->where('mediaConversion', 'small')->getUrl();
    })->get()



# Get all clients with all urls for media:logotype    
Client::with('media.logotype', function ($q) {
       $q->getUrl();
    })->get()

想法?

EN

回答 1

Stack Overflow用户

发布于 2021-03-15 18:47:30

我得到了josn作为它,然后我创建了另一个变量容器,URL,如果它只是在图像上,那么:

代码语言:javascript
复制
foreach ($doctors as $doctor)
    if ($doctor->image != null)
        $image_url = '';
        $image_url = $doctor->image->thumbnail;
        $doctor->image_url = $image_url;

然后,我通过向隐藏数组中添加image、media来隐藏原始数组(如果没有,则只需在模型中创建变量)

代码语言:javascript
复制
    protected $hidden = ['media', 'image'];

如果你有多个镜像,你可以这样做:

代码语言:javascript
复制
        $images_url = [];
        foreach($portfolio->images as $images){
            $images_url[] = $images->url;
        }
        $portfolio->images_url = $images_url;

另一个例子

代码语言:javascript
复制
    public function show($doctor_id)
    {
        $portfolios = Portfolio::where('doctor_id', $doctor_id)->get();
        foreach ($portfolios as $portfolio) {
            $images_url = [];
            foreach ($portfolio->images as $images) {
                $images_url[] = $images->url;
            }
            $portfolio->images_url = $images_url;
        }
        return new PortfolioResource($portfolios);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63517988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档