laravel-medailibrary getFirstMediaUrl («изображения») не работает для соединенных таблиц

#laravel #media-library #laravel-medialibrary

#laravel #медиа-библиотека #laravel-medialibrary

Вопрос:

У меня проблема с получением мультимедиа из объединенной таблицы в laravel-medailibrary, я использовал getFirstMediaUrl («изображения») для получения фотографий из одной таблицы, и это работает, но если я объединю две или три таблицы, это не сработает, как я могу это решить?

Я хочу получать фотографии из тех сообщений, которыми поделился пользователь.

эта таблица post: введите описание изображения здесь

это таблица share_tb:

введите описание изображения здесь

это таблица пользователей:

введите описание изображения здесь

это таблица мультимедиа:

введите описание изображения здесь

Ответ №1:

Я нахожу свой ответ, попробовав несколько способов:

 public function getPosts(Request $request)
{


    $result = [];

    $postID = DB::table("share_tb")->where("user_id", Auth::user()->id)->get();

    foreach ($postID as $id) {

        if (count(Post::where("id", $id->related_id)->get()) > 0) {
            $posts = Post::where("id", $id->related_id)->get();
            foreach ($posts as $post) {

                // $result = $post->getMedia('images');
                array_push($result, [
                    "comment_count" => getTotalComment($post->id),
                    "course_id" => $post->course_id,
                    "id" => $post->id,
                    'post_image' => count($post->getMedia('images')) > 0 ? $post->getMedia('images')[0]->getFullUrl('big') : "",
                    'logo'=>GetCourseLogo::collection(Course::where('course_id',$post->course_id)->get()),
                    "post_author" => $post->post_author,
                    "post_date" => $post->post_date,
                    "post_excerpt" => $post->post_excerpt,
                    "post_modified" => $post->post_modified,
                    "post_parent" => $post->post_parent,
                    "post_title" => $post->post_title,
                    "post_type" => $post->post_type,
                ]);
            }
        }

    }
    return Response()->json($result);

}
  

и с помощью этой коллекции ресурсов я получаю логотип:

 class GetCourseLogo extends JsonResource
  {
     public function toArray($request)
       {
          return $this->getFirstMediaUrl('logo');
       }
  }