how to get objects from relation of relation in laravel












0














I have 3 model: Course,group,student



I want to give games from Course with 2 relations.



for ex: I want students of Course 1 (id=1)



The Course has Many group(5,6,8) and each group have One(36,38) or Many(35,37) students



How to get all students of Course with relations and eloquent










share|improve this question
























  • Hello and welcome to StackOverflow. Please take some time to read the help page, especially the sections named "What topics can I ask about here?" and "What types of questions should I avoid asking?". And more importantly, please read the Stack Overflow question checklist. You might also want to learn about Minimal, Complete, and Verifiable Examples.
    – Dang Nguyen
    Dec 15 '18 at 1:09
















0














I have 3 model: Course,group,student



I want to give games from Course with 2 relations.



for ex: I want students of Course 1 (id=1)



The Course has Many group(5,6,8) and each group have One(36,38) or Many(35,37) students



How to get all students of Course with relations and eloquent










share|improve this question
























  • Hello and welcome to StackOverflow. Please take some time to read the help page, especially the sections named "What topics can I ask about here?" and "What types of questions should I avoid asking?". And more importantly, please read the Stack Overflow question checklist. You might also want to learn about Minimal, Complete, and Verifiable Examples.
    – Dang Nguyen
    Dec 15 '18 at 1:09














0












0








0







I have 3 model: Course,group,student



I want to give games from Course with 2 relations.



for ex: I want students of Course 1 (id=1)



The Course has Many group(5,6,8) and each group have One(36,38) or Many(35,37) students



How to get all students of Course with relations and eloquent










share|improve this question















I have 3 model: Course,group,student



I want to give games from Course with 2 relations.



for ex: I want students of Course 1 (id=1)



The Course has Many group(5,6,8) and each group have One(36,38) or Many(35,37) students



How to get all students of Course with relations and eloquent







laravel laravel-5 eloquent relationship eloquent--relationship






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 21 '18 at 15:02

























asked Nov 21 '18 at 7:14









mohammad Hosseini

42




42












  • Hello and welcome to StackOverflow. Please take some time to read the help page, especially the sections named "What topics can I ask about here?" and "What types of questions should I avoid asking?". And more importantly, please read the Stack Overflow question checklist. You might also want to learn about Minimal, Complete, and Verifiable Examples.
    – Dang Nguyen
    Dec 15 '18 at 1:09


















  • Hello and welcome to StackOverflow. Please take some time to read the help page, especially the sections named "What topics can I ask about here?" and "What types of questions should I avoid asking?". And more importantly, please read the Stack Overflow question checklist. You might also want to learn about Minimal, Complete, and Verifiable Examples.
    – Dang Nguyen
    Dec 15 '18 at 1:09
















Hello and welcome to StackOverflow. Please take some time to read the help page, especially the sections named "What topics can I ask about here?" and "What types of questions should I avoid asking?". And more importantly, please read the Stack Overflow question checklist. You might also want to learn about Minimal, Complete, and Verifiable Examples.
– Dang Nguyen
Dec 15 '18 at 1:09




Hello and welcome to StackOverflow. Please take some time to read the help page, especially the sections named "What topics can I ask about here?" and "What types of questions should I avoid asking?". And more importantly, please read the Stack Overflow question checklist. You might also want to learn about Minimal, Complete, and Verifiable Examples.
– Dang Nguyen
Dec 15 '18 at 1:09












2 Answers
2






active

oldest

votes


















1














You can use hasManyThrough



 public function games()
{
return $this->hasManyThrough(Tournament::class, Group::class);
}



The "has-many-through" relationship provides a convenient shortcut for accessing distant relations via an intermediate relation. For example, a Country model might have many Post models through an intermediate User model. In this example, you could easily gather all blog posts for a given country.




https://laravel.com/docs/5.7/eloquent-relationships#has-many-through






share|improve this answer





















  • Nice...in this case we can't use where clauses for middle relationship (here:group)?...for ex: get games from group where round=4?
    – mohammad Hosseini
    Nov 21 '18 at 8:04



















0














If you need only games:



$games = Game::with(['some_relation_name', 'some_relation_name_2'])
->whereHas('group', function($query) {
$query->whereHas('tournament', function($query) {
$query->where('id', 1)
});
})
->get();


If you need tournament with games, Anar's option is better.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53406971%2fhow-to-get-objects-from-relation-of-relation-in-laravel%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    You can use hasManyThrough



     public function games()
    {
    return $this->hasManyThrough(Tournament::class, Group::class);
    }



    The "has-many-through" relationship provides a convenient shortcut for accessing distant relations via an intermediate relation. For example, a Country model might have many Post models through an intermediate User model. In this example, you could easily gather all blog posts for a given country.




    https://laravel.com/docs/5.7/eloquent-relationships#has-many-through






    share|improve this answer





















    • Nice...in this case we can't use where clauses for middle relationship (here:group)?...for ex: get games from group where round=4?
      – mohammad Hosseini
      Nov 21 '18 at 8:04
















    1














    You can use hasManyThrough



     public function games()
    {
    return $this->hasManyThrough(Tournament::class, Group::class);
    }



    The "has-many-through" relationship provides a convenient shortcut for accessing distant relations via an intermediate relation. For example, a Country model might have many Post models through an intermediate User model. In this example, you could easily gather all blog posts for a given country.




    https://laravel.com/docs/5.7/eloquent-relationships#has-many-through






    share|improve this answer





















    • Nice...in this case we can't use where clauses for middle relationship (here:group)?...for ex: get games from group where round=4?
      – mohammad Hosseini
      Nov 21 '18 at 8:04














    1












    1








    1






    You can use hasManyThrough



     public function games()
    {
    return $this->hasManyThrough(Tournament::class, Group::class);
    }



    The "has-many-through" relationship provides a convenient shortcut for accessing distant relations via an intermediate relation. For example, a Country model might have many Post models through an intermediate User model. In this example, you could easily gather all blog posts for a given country.




    https://laravel.com/docs/5.7/eloquent-relationships#has-many-through






    share|improve this answer












    You can use hasManyThrough



     public function games()
    {
    return $this->hasManyThrough(Tournament::class, Group::class);
    }



    The "has-many-through" relationship provides a convenient shortcut for accessing distant relations via an intermediate relation. For example, a Country model might have many Post models through an intermediate User model. In this example, you could easily gather all blog posts for a given country.




    https://laravel.com/docs/5.7/eloquent-relationships#has-many-through







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Nov 21 '18 at 7:27









    Anar Bayramov

    4,26942542




    4,26942542












    • Nice...in this case we can't use where clauses for middle relationship (here:group)?...for ex: get games from group where round=4?
      – mohammad Hosseini
      Nov 21 '18 at 8:04


















    • Nice...in this case we can't use where clauses for middle relationship (here:group)?...for ex: get games from group where round=4?
      – mohammad Hosseini
      Nov 21 '18 at 8:04
















    Nice...in this case we can't use where clauses for middle relationship (here:group)?...for ex: get games from group where round=4?
    – mohammad Hosseini
    Nov 21 '18 at 8:04




    Nice...in this case we can't use where clauses for middle relationship (here:group)?...for ex: get games from group where round=4?
    – mohammad Hosseini
    Nov 21 '18 at 8:04













    0














    If you need only games:



    $games = Game::with(['some_relation_name', 'some_relation_name_2'])
    ->whereHas('group', function($query) {
    $query->whereHas('tournament', function($query) {
    $query->where('id', 1)
    });
    })
    ->get();


    If you need tournament with games, Anar's option is better.






    share|improve this answer




























      0














      If you need only games:



      $games = Game::with(['some_relation_name', 'some_relation_name_2'])
      ->whereHas('group', function($query) {
      $query->whereHas('tournament', function($query) {
      $query->where('id', 1)
      });
      })
      ->get();


      If you need tournament with games, Anar's option is better.






      share|improve this answer


























        0












        0








        0






        If you need only games:



        $games = Game::with(['some_relation_name', 'some_relation_name_2'])
        ->whereHas('group', function($query) {
        $query->whereHas('tournament', function($query) {
        $query->where('id', 1)
        });
        })
        ->get();


        If you need tournament with games, Anar's option is better.






        share|improve this answer














        If you need only games:



        $games = Game::with(['some_relation_name', 'some_relation_name_2'])
        ->whereHas('group', function($query) {
        $query->whereHas('tournament', function($query) {
        $query->where('id', 1)
        });
        })
        ->get();


        If you need tournament with games, Anar's option is better.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 21 '18 at 8:13

























        answered Nov 21 '18 at 7:29









        IndianCoding

        88519




        88519






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53406971%2fhow-to-get-objects-from-relation-of-relation-in-laravel%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Wiesbaden

            Marschland

            Dieringhausen