【问题标题】:Eager Load media Url - laravel-medialibrary渴望加载媒体网址 - laravel-medialibrary
【发布时间】:2020-08-21 06:59:26
【问题描述】:

我正在尝试从 Spatie 的 laravel-medialibrary 加载所有标识网址:

然后他们将使用 json 响应。

理想情况下,图书馆的工作方式如下:

# 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()

想法?

【问题讨论】:

    标签: laravel laravel-medialibrary


    【解决方案1】:

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

    foreach ($doctors as $doctor)
        if ($doctor->image != null)
            $image_url = '';
            $image_url = $doctor->image->thumbnail;
            $doctor->image_url = $image_url;
    

    然后我通过将图像、媒体添加到隐藏数组中来从 Doctor 模型中隐藏原始的(如果没有,则只需在模型中创建变量)

        protected $hidden = ['media', 'image'];
    

    如果你有不止一张图片,你可以这样做:

            $images_url = [];
            foreach($portfolio->images as $images){
                $images_url[] = $images->url;
            }
            $portfolio->images_url = $images_url;
    
    

    另一个例子

        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);
        }
    
    

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 2020-12-05
      相关资源
      最近更新 更多