简体   繁体   中英

How to show one gallery with it's photos

I am doing page with gallery and if I click on one of them, it will redirect me to single gallery page and supposed to show photos of that gallery.

When I get on the page of actual gallery, there is nothing in gallery object.

When I do Gallery::with('photos')->get() . This will give me every gallery with its photos. I want photos only from actual gallery.

Thanks.

//Photo model


class Photo extends Model
{
   public function gallery()
    {
        return $this->belongsTo('App\Gallery');
    }
}

//Gallery model



class Gallery extends Model
{
        public function getRouteKeyName()
    {
        return 'slug';
    }

        /**
     * Get the photos of this gallery.
     */
    public function photos()
    {
        return $this->hasMany('App\Photo');
    }
}


//show metod in GalleryController

   public function show(Gallery $gallery)
    {

           $gallery->load('photos');

            return compact('gallery');

    }

There is nothing in the gallery because you are not returning a view.

This line:

 return compact('gallery');

Needs a view, something like:

return view("somethingFolder.somethingView", compact('gallery'));

OR if you are just showing a model like with an ajax pull, you can use something like this:

    $view = view('somefolder.someview', compact('gallery'));

    $sections = $view->renderSections(); // returns an associative array of 'content', 'pageHeading' etc

    return $sections['modalContent']; // this will only return whats in the content section

Then in your view, $gallery->photos will give you a collection of the photos for that gallery.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM