Laravel, selecting all Posts where its first approved revision is published











up vote
0
down vote

favorite












I have 2 tables Articles and Revisions

There is a relationship between them one2many



The Revisions table has 2 columns isApproved and isPublished



Now, I want to select all articles, when its first Approved revision is Published



Article::whereHas('revisions', function ($query) {
$query->where('isApproved', 1)->where('isPublished', 1);
});


But this code selected all articles that have approved and published revisions










share|improve this question




























    up vote
    0
    down vote

    favorite












    I have 2 tables Articles and Revisions

    There is a relationship between them one2many



    The Revisions table has 2 columns isApproved and isPublished



    Now, I want to select all articles, when its first Approved revision is Published



    Article::whereHas('revisions', function ($query) {
    $query->where('isApproved', 1)->where('isPublished', 1);
    });


    But this code selected all articles that have approved and published revisions










    share|improve this question


























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I have 2 tables Articles and Revisions

      There is a relationship between them one2many



      The Revisions table has 2 columns isApproved and isPublished



      Now, I want to select all articles, when its first Approved revision is Published



      Article::whereHas('revisions', function ($query) {
      $query->where('isApproved', 1)->where('isPublished', 1);
      });


      But this code selected all articles that have approved and published revisions










      share|improve this question















      I have 2 tables Articles and Revisions

      There is a relationship between them one2many



      The Revisions table has 2 columns isApproved and isPublished



      Now, I want to select all articles, when its first Approved revision is Published



      Article::whereHas('revisions', function ($query) {
      $query->where('isApproved', 1)->where('isPublished', 1);
      });


      But this code selected all articles that have approved and published revisions







      laravel eloquent






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 8 at 17:02

























      asked Nov 8 at 16:56









      user9500574

      647




      647
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote















          Try filter the results:



          $articles = Article::
          whereHas('revisions', function ($query) {
          $query->where('isApproved', 1)->where('isPublished', 1);
          })
          ->get()
          ->filter(function ($article) {
          return $article->revisions->first(function ($revision) {
          return $revision->isApproved == true;
          })
          ->isPublished == true;

          });





          share|improve this answer























          • Thank you, but I want to avoid using Filter method, I'm trying to use the answer in this page, but I failed stackoverflow.com/a/53120558/9500574
            – user9500574
            Nov 8 at 17:11










          • I think I got the appropriate solution
            – user9500574
            Nov 8 at 17:15











          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%2f53212582%2flaravel-selecting-all-posts-where-its-first-approved-revision-is-published%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








          up vote
          1
          down vote















          Try filter the results:



          $articles = Article::
          whereHas('revisions', function ($query) {
          $query->where('isApproved', 1)->where('isPublished', 1);
          })
          ->get()
          ->filter(function ($article) {
          return $article->revisions->first(function ($revision) {
          return $revision->isApproved == true;
          })
          ->isPublished == true;

          });





          share|improve this answer























          • Thank you, but I want to avoid using Filter method, I'm trying to use the answer in this page, but I failed stackoverflow.com/a/53120558/9500574
            – user9500574
            Nov 8 at 17:11










          • I think I got the appropriate solution
            – user9500574
            Nov 8 at 17:15















          up vote
          1
          down vote















          Try filter the results:



          $articles = Article::
          whereHas('revisions', function ($query) {
          $query->where('isApproved', 1)->where('isPublished', 1);
          })
          ->get()
          ->filter(function ($article) {
          return $article->revisions->first(function ($revision) {
          return $revision->isApproved == true;
          })
          ->isPublished == true;

          });





          share|improve this answer























          • Thank you, but I want to avoid using Filter method, I'm trying to use the answer in this page, but I failed stackoverflow.com/a/53120558/9500574
            – user9500574
            Nov 8 at 17:11










          • I think I got the appropriate solution
            – user9500574
            Nov 8 at 17:15













          up vote
          1
          down vote










          up vote
          1
          down vote











          Try filter the results:



          $articles = Article::
          whereHas('revisions', function ($query) {
          $query->where('isApproved', 1)->where('isPublished', 1);
          })
          ->get()
          ->filter(function ($article) {
          return $article->revisions->first(function ($revision) {
          return $revision->isApproved == true;
          })
          ->isPublished == true;

          });





          share|improve this answer
















          Try filter the results:



          $articles = Article::
          whereHas('revisions', function ($query) {
          $query->where('isApproved', 1)->where('isPublished', 1);
          })
          ->get()
          ->filter(function ($article) {
          return $article->revisions->first(function ($revision) {
          return $revision->isApproved == true;
          })
          ->isPublished == true;

          });






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 8 at 17:13

























          answered Nov 8 at 17:08









          HCK

          2,7861829




          2,7861829












          • Thank you, but I want to avoid using Filter method, I'm trying to use the answer in this page, but I failed stackoverflow.com/a/53120558/9500574
            – user9500574
            Nov 8 at 17:11










          • I think I got the appropriate solution
            – user9500574
            Nov 8 at 17:15


















          • Thank you, but I want to avoid using Filter method, I'm trying to use the answer in this page, but I failed stackoverflow.com/a/53120558/9500574
            – user9500574
            Nov 8 at 17:11










          • I think I got the appropriate solution
            – user9500574
            Nov 8 at 17:15
















          Thank you, but I want to avoid using Filter method, I'm trying to use the answer in this page, but I failed stackoverflow.com/a/53120558/9500574
          – user9500574
          Nov 8 at 17:11




          Thank you, but I want to avoid using Filter method, I'm trying to use the answer in this page, but I failed stackoverflow.com/a/53120558/9500574
          – user9500574
          Nov 8 at 17:11












          I think I got the appropriate solution
          – user9500574
          Nov 8 at 17:15




          I think I got the appropriate solution
          – user9500574
          Nov 8 at 17:15


















           

          draft saved


          draft discarded



















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53212582%2flaravel-selecting-all-posts-where-its-first-approved-revision-is-published%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

          Schultheiß

          Verwaltungsgliederung Dänemarks

          Liste der Kulturdenkmale in Wilsdruff