Laravel contains relation of relation











up vote
0
down vote

favorite
2












I have the relations



Trainee->hasMany->Poke
Company->hasMany->Poke

Poke->belongsTo->Trainee
Poke->belongsTo->Company


Now, I want to check if a Trainee contains a Poke from a Company. How can I do this the cleanest? I would prefer something like $trainee->containsPokeFrom($company); because I am using this in my blade file, but if thats not an option, than it's ok.










share|improve this question


























    up vote
    0
    down vote

    favorite
    2












    I have the relations



    Trainee->hasMany->Poke
    Company->hasMany->Poke

    Poke->belongsTo->Trainee
    Poke->belongsTo->Company


    Now, I want to check if a Trainee contains a Poke from a Company. How can I do this the cleanest? I would prefer something like $trainee->containsPokeFrom($company); because I am using this in my blade file, but if thats not an option, than it's ok.










    share|improve this question
























      up vote
      0
      down vote

      favorite
      2









      up vote
      0
      down vote

      favorite
      2






      2





      I have the relations



      Trainee->hasMany->Poke
      Company->hasMany->Poke

      Poke->belongsTo->Trainee
      Poke->belongsTo->Company


      Now, I want to check if a Trainee contains a Poke from a Company. How can I do this the cleanest? I would prefer something like $trainee->containsPokeFrom($company); because I am using this in my blade file, but if thats not an option, than it's ok.










      share|improve this question













      I have the relations



      Trainee->hasMany->Poke
      Company->hasMany->Poke

      Poke->belongsTo->Trainee
      Poke->belongsTo->Company


      Now, I want to check if a Trainee contains a Poke from a Company. How can I do this the cleanest? I would prefer something like $trainee->containsPokeFrom($company); because I am using this in my blade file, but if thats not an option, than it's ok.







      php laravel relation






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 19 at 11:42









      KuebelElch15

      65415




      65415
























          2 Answers
          2






          active

          oldest

          votes

















          up vote
          3
          down vote



          accepted










          You would use the exists() method on your pokes relationship method:



          class Trainee extends Model
          {
          public function pokes()
          {
          return $this->hasMany(Poke::class);
          }

          public function containsPokeFrom(Company $company)
          {
          return $this->pokes()->where(function ($poke) use ($company) {
          $poke->where('company_id', $company->getKey());
          })->exists();
          }
          }





          share|improve this answer

















          • 1




            Thanks, you are a genius!
            – KuebelElch15
            Nov 19 at 12:00






          • 1




            @KuebelElch15 Thanks. Not a genius, just someone who’s worked with Laravel a fair bit :)
            – Martin Bean
            Nov 19 at 12:03










          • @MartinBean Can you explain why where() with closure is needed here?
            – IndianCoding
            Nov 19 at 12:15








          • 1




            @IndianCoding To restrict the pokes to the specified company only. Otherwise it’ll return the trainee’s pokes from every company.
            – Martin Bean
            Nov 19 at 13:35


















          up vote
          0
          down vote













          You can get data with with() method.



          Example:



          public function getTrainee()
          {
          return Trainee::with('Poke.Company')->get();
          // Here you will find all trainee which associated with multiple pokes which belongs to a company
          }





          share|improve this answer





















          • I want to check if a specific trainee contains a relation with a poke from a specific company. Like Trainee A has a Poke from Company B. Or has Company A already made a Poke to Trainee B?
            – KuebelElch15
            Nov 19 at 11:52











          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',
          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%2f53373898%2flaravel-contains-relation-of-relation%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








          up vote
          3
          down vote



          accepted










          You would use the exists() method on your pokes relationship method:



          class Trainee extends Model
          {
          public function pokes()
          {
          return $this->hasMany(Poke::class);
          }

          public function containsPokeFrom(Company $company)
          {
          return $this->pokes()->where(function ($poke) use ($company) {
          $poke->where('company_id', $company->getKey());
          })->exists();
          }
          }





          share|improve this answer

















          • 1




            Thanks, you are a genius!
            – KuebelElch15
            Nov 19 at 12:00






          • 1




            @KuebelElch15 Thanks. Not a genius, just someone who’s worked with Laravel a fair bit :)
            – Martin Bean
            Nov 19 at 12:03










          • @MartinBean Can you explain why where() with closure is needed here?
            – IndianCoding
            Nov 19 at 12:15








          • 1




            @IndianCoding To restrict the pokes to the specified company only. Otherwise it’ll return the trainee’s pokes from every company.
            – Martin Bean
            Nov 19 at 13:35















          up vote
          3
          down vote



          accepted










          You would use the exists() method on your pokes relationship method:



          class Trainee extends Model
          {
          public function pokes()
          {
          return $this->hasMany(Poke::class);
          }

          public function containsPokeFrom(Company $company)
          {
          return $this->pokes()->where(function ($poke) use ($company) {
          $poke->where('company_id', $company->getKey());
          })->exists();
          }
          }





          share|improve this answer

















          • 1




            Thanks, you are a genius!
            – KuebelElch15
            Nov 19 at 12:00






          • 1




            @KuebelElch15 Thanks. Not a genius, just someone who’s worked with Laravel a fair bit :)
            – Martin Bean
            Nov 19 at 12:03










          • @MartinBean Can you explain why where() with closure is needed here?
            – IndianCoding
            Nov 19 at 12:15








          • 1




            @IndianCoding To restrict the pokes to the specified company only. Otherwise it’ll return the trainee’s pokes from every company.
            – Martin Bean
            Nov 19 at 13:35













          up vote
          3
          down vote



          accepted







          up vote
          3
          down vote



          accepted






          You would use the exists() method on your pokes relationship method:



          class Trainee extends Model
          {
          public function pokes()
          {
          return $this->hasMany(Poke::class);
          }

          public function containsPokeFrom(Company $company)
          {
          return $this->pokes()->where(function ($poke) use ($company) {
          $poke->where('company_id', $company->getKey());
          })->exists();
          }
          }





          share|improve this answer












          You would use the exists() method on your pokes relationship method:



          class Trainee extends Model
          {
          public function pokes()
          {
          return $this->hasMany(Poke::class);
          }

          public function containsPokeFrom(Company $company)
          {
          return $this->pokes()->where(function ($poke) use ($company) {
          $poke->where('company_id', $company->getKey());
          })->exists();
          }
          }






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 19 at 11:56









          Martin Bean

          24.1k1790158




          24.1k1790158








          • 1




            Thanks, you are a genius!
            – KuebelElch15
            Nov 19 at 12:00






          • 1




            @KuebelElch15 Thanks. Not a genius, just someone who’s worked with Laravel a fair bit :)
            – Martin Bean
            Nov 19 at 12:03










          • @MartinBean Can you explain why where() with closure is needed here?
            – IndianCoding
            Nov 19 at 12:15








          • 1




            @IndianCoding To restrict the pokes to the specified company only. Otherwise it’ll return the trainee’s pokes from every company.
            – Martin Bean
            Nov 19 at 13:35














          • 1




            Thanks, you are a genius!
            – KuebelElch15
            Nov 19 at 12:00






          • 1




            @KuebelElch15 Thanks. Not a genius, just someone who’s worked with Laravel a fair bit :)
            – Martin Bean
            Nov 19 at 12:03










          • @MartinBean Can you explain why where() with closure is needed here?
            – IndianCoding
            Nov 19 at 12:15








          • 1




            @IndianCoding To restrict the pokes to the specified company only. Otherwise it’ll return the trainee’s pokes from every company.
            – Martin Bean
            Nov 19 at 13:35








          1




          1




          Thanks, you are a genius!
          – KuebelElch15
          Nov 19 at 12:00




          Thanks, you are a genius!
          – KuebelElch15
          Nov 19 at 12:00




          1




          1




          @KuebelElch15 Thanks. Not a genius, just someone who’s worked with Laravel a fair bit :)
          – Martin Bean
          Nov 19 at 12:03




          @KuebelElch15 Thanks. Not a genius, just someone who’s worked with Laravel a fair bit :)
          – Martin Bean
          Nov 19 at 12:03












          @MartinBean Can you explain why where() with closure is needed here?
          – IndianCoding
          Nov 19 at 12:15






          @MartinBean Can you explain why where() with closure is needed here?
          – IndianCoding
          Nov 19 at 12:15






          1




          1




          @IndianCoding To restrict the pokes to the specified company only. Otherwise it’ll return the trainee’s pokes from every company.
          – Martin Bean
          Nov 19 at 13:35




          @IndianCoding To restrict the pokes to the specified company only. Otherwise it’ll return the trainee’s pokes from every company.
          – Martin Bean
          Nov 19 at 13:35












          up vote
          0
          down vote













          You can get data with with() method.



          Example:



          public function getTrainee()
          {
          return Trainee::with('Poke.Company')->get();
          // Here you will find all trainee which associated with multiple pokes which belongs to a company
          }





          share|improve this answer





















          • I want to check if a specific trainee contains a relation with a poke from a specific company. Like Trainee A has a Poke from Company B. Or has Company A already made a Poke to Trainee B?
            – KuebelElch15
            Nov 19 at 11:52















          up vote
          0
          down vote













          You can get data with with() method.



          Example:



          public function getTrainee()
          {
          return Trainee::with('Poke.Company')->get();
          // Here you will find all trainee which associated with multiple pokes which belongs to a company
          }





          share|improve this answer





















          • I want to check if a specific trainee contains a relation with a poke from a specific company. Like Trainee A has a Poke from Company B. Or has Company A already made a Poke to Trainee B?
            – KuebelElch15
            Nov 19 at 11:52













          up vote
          0
          down vote










          up vote
          0
          down vote









          You can get data with with() method.



          Example:



          public function getTrainee()
          {
          return Trainee::with('Poke.Company')->get();
          // Here you will find all trainee which associated with multiple pokes which belongs to a company
          }





          share|improve this answer












          You can get data with with() method.



          Example:



          public function getTrainee()
          {
          return Trainee::with('Poke.Company')->get();
          // Here you will find all trainee which associated with multiple pokes which belongs to a company
          }






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 19 at 11:49









          Emtiaz Zahid

          1,025516




          1,025516












          • I want to check if a specific trainee contains a relation with a poke from a specific company. Like Trainee A has a Poke from Company B. Or has Company A already made a Poke to Trainee B?
            – KuebelElch15
            Nov 19 at 11:52


















          • I want to check if a specific trainee contains a relation with a poke from a specific company. Like Trainee A has a Poke from Company B. Or has Company A already made a Poke to Trainee B?
            – KuebelElch15
            Nov 19 at 11:52
















          I want to check if a specific trainee contains a relation with a poke from a specific company. Like Trainee A has a Poke from Company B. Or has Company A already made a Poke to Trainee B?
          – KuebelElch15
          Nov 19 at 11:52




          I want to check if a specific trainee contains a relation with a poke from a specific company. Like Trainee A has a Poke from Company B. Or has Company A already made a Poke to Trainee B?
          – KuebelElch15
          Nov 19 at 11:52


















          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%2f53373898%2flaravel-contains-relation-of-relation%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

          "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

          Alcedinidae

          Origin of the phrase “under your belt”?