Why is the ID replaced with a value from another table? Laravel BelongsTo












0















I have 4 tables. Championships, Users, Roles and users_roles.



One user belongs to championship as judge. But I have to select only users who have role 'Judge'.



For this, I created new column in championships table which is called "main_judge" and created new relationship



class Championship extends Model
{
...
public function mainJudge()
{
return $this->hasOne('AppUser', 'id', 'main_judge');
}
...
}


Then I add to query some code



$query->join('users_roles', 'users.id',  '=', 'users_roles.user_id')
->join('roles', 'users_roles.role_id', '=', 'roles.id')
->where('roles.alias', '=', 'judge');


when I print query as sql I got (see screen)



http://joxi.ru/a2X45M1Sw0RpE2



and after $query->get() instead of user ID i got a role ID (see screen)



http://joxi.ru/bmoxMaDs3NVoE2










share|improve this question



























    0















    I have 4 tables. Championships, Users, Roles and users_roles.



    One user belongs to championship as judge. But I have to select only users who have role 'Judge'.



    For this, I created new column in championships table which is called "main_judge" and created new relationship



    class Championship extends Model
    {
    ...
    public function mainJudge()
    {
    return $this->hasOne('AppUser', 'id', 'main_judge');
    }
    ...
    }


    Then I add to query some code



    $query->join('users_roles', 'users.id',  '=', 'users_roles.user_id')
    ->join('roles', 'users_roles.role_id', '=', 'roles.id')
    ->where('roles.alias', '=', 'judge');


    when I print query as sql I got (see screen)



    http://joxi.ru/a2X45M1Sw0RpE2



    and after $query->get() instead of user ID i got a role ID (see screen)



    http://joxi.ru/bmoxMaDs3NVoE2










    share|improve this question

























      0












      0








      0








      I have 4 tables. Championships, Users, Roles and users_roles.



      One user belongs to championship as judge. But I have to select only users who have role 'Judge'.



      For this, I created new column in championships table which is called "main_judge" and created new relationship



      class Championship extends Model
      {
      ...
      public function mainJudge()
      {
      return $this->hasOne('AppUser', 'id', 'main_judge');
      }
      ...
      }


      Then I add to query some code



      $query->join('users_roles', 'users.id',  '=', 'users_roles.user_id')
      ->join('roles', 'users_roles.role_id', '=', 'roles.id')
      ->where('roles.alias', '=', 'judge');


      when I print query as sql I got (see screen)



      http://joxi.ru/a2X45M1Sw0RpE2



      and after $query->get() instead of user ID i got a role ID (see screen)



      http://joxi.ru/bmoxMaDs3NVoE2










      share|improve this question














      I have 4 tables. Championships, Users, Roles and users_roles.



      One user belongs to championship as judge. But I have to select only users who have role 'Judge'.



      For this, I created new column in championships table which is called "main_judge" and created new relationship



      class Championship extends Model
      {
      ...
      public function mainJudge()
      {
      return $this->hasOne('AppUser', 'id', 'main_judge');
      }
      ...
      }


      Then I add to query some code



      $query->join('users_roles', 'users.id',  '=', 'users_roles.user_id')
      ->join('roles', 'users_roles.role_id', '=', 'roles.id')
      ->where('roles.alias', '=', 'judge');


      when I print query as sql I got (see screen)



      http://joxi.ru/a2X45M1Sw0RpE2



      and after $query->get() instead of user ID i got a role ID (see screen)



      http://joxi.ru/bmoxMaDs3NVoE2







      laravel-5 laravel-nova






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 8:48









      ViktorViktor

      1801418




      1801418
























          1 Answer
          1






          active

          oldest

          votes


















          0














          I would suggest using eloquent rather than the query builder as it will remove the need to manually define any joins.



          You should just be able to do this:



          $championship = Championship::find($id);

          $judge = $championship->mainJudge;


          If you then dd($judge) you should end up with the appropriate User object.






          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%2f53296155%2fwhy-is-the-id-replaced-with-a-value-from-another-table-laravel-belongsto%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            I would suggest using eloquent rather than the query builder as it will remove the need to manually define any joins.



            You should just be able to do this:



            $championship = Championship::find($id);

            $judge = $championship->mainJudge;


            If you then dd($judge) you should end up with the appropriate User object.






            share|improve this answer




























              0














              I would suggest using eloquent rather than the query builder as it will remove the need to manually define any joins.



              You should just be able to do this:



              $championship = Championship::find($id);

              $judge = $championship->mainJudge;


              If you then dd($judge) you should end up with the appropriate User object.






              share|improve this answer


























                0












                0








                0







                I would suggest using eloquent rather than the query builder as it will remove the need to manually define any joins.



                You should just be able to do this:



                $championship = Championship::find($id);

                $judge = $championship->mainJudge;


                If you then dd($judge) you should end up with the appropriate User object.






                share|improve this answer













                I would suggest using eloquent rather than the query builder as it will remove the need to manually define any joins.



                You should just be able to do this:



                $championship = Championship::find($id);

                $judge = $championship->mainJudge;


                If you then dd($judge) you should end up with the appropriate User object.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 14 '18 at 16:40









                SpholtSpholt

                742616




                742616
































                    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.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53296155%2fwhy-is-the-id-replaced-with-a-value-from-another-table-laravel-belongsto%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

                    Florida Star v. B. J. F.

                    Danny Elfman

                    Lugert, Oklahoma