Search code examples
phplaraveleloquentlaravel-5.3

How to call a function on model Collection laravel


before i post this I've searched a lot for an answer but no result please forgive me my English not that good

i have Laravel app that contains :

User Model

public function Follow()
{
    return $this->belongsToMany(Page::class,"follows","user_id","page_id");
}

Page Model

public function Posts()
{
    return $this->hasMany(Post::class);
}

Post Model

public function Page()
{
    return $this->belongsTo(Page::class);
}

In the homeController I've index method that should return the posts of the user's followed pages

$user->follow()->get(); 

this returned only the Pages collection, I couldn't get the Posts or access any I need to access the posts and their properties, also if possible i need to count the post's likes.

thank you very much.


Solution

  • I have found an answer after trillion attempts

        public function index()
    {
        $user = Auth::User();
        $posts = [];
    
        foreach ($user->follow as $key => $page) 
        {
            foreach ($page->posts as $k => $post)
            {
                array_push($posts, $post);
            }
    
        }
        //return $posts;
        return view('home', compact('posts'));
    }
    

    I'm not able to access the likes count yet but i'll try the with('') method I'll Update for any further Info