Automatically Change Model Value If Another Value Updates












0















With Laravel & Eloquent, if a column called status changes its value to "complete," for example, is it possible to automatically change the value of another column (issue_id) to NULL?



I was wondering about the set attribute or intercepting the save() method, but not sure which is best.










share|improve this question





























    0















    With Laravel & Eloquent, if a column called status changes its value to "complete," for example, is it possible to automatically change the value of another column (issue_id) to NULL?



    I was wondering about the set attribute or intercepting the save() method, but not sure which is best.










    share|improve this question



























      0












      0








      0








      With Laravel & Eloquent, if a column called status changes its value to "complete," for example, is it possible to automatically change the value of another column (issue_id) to NULL?



      I was wondering about the set attribute or intercepting the save() method, but not sure which is best.










      share|improve this question
















      With Laravel & Eloquent, if a column called status changes its value to "complete," for example, is it possible to automatically change the value of another column (issue_id) to NULL?



      I was wondering about the set attribute or intercepting the save() method, but not sure which is best.







      php laravel eloquent






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 1 at 22:16









      Karl Hill

      3,10622243




      3,10622243










      asked Jan 1 at 16:40









      jdawgjdawg

      1721214




      1721214
























          1 Answer
          1






          active

          oldest

          votes


















          0














          You could make use of Observers.



          For example, to observe the Issue model, you could generate an Observer as such:



          php artisan make:observer IssueObserver --model=Issue


          This will produce an observer where you could listen to many model events.



          <?php

          namespace AppObservers;

          use AppIssue;

          class IssueObserver
          {

          /**
          * Handle the Issue "updating" event.
          *
          * @param AppIssue $Issue
          * @return void
          */
          public function updating(Issue $issue)
          {
          if($issue->status == 'complete') {
          $issue->issue_id = null;
          }
          }
          }


          To register the Observer, you would need to add this to AppServiceProvider@boot()



          <?php

          namespace AppProviders;

          use AppIssue;
          use AppObserversIssueObserver;
          use IlluminateSupportServiceProvider;

          class AppServiceProvider extends ServiceProvider
          {
          /**
          * Bootstrap any application services.
          *
          * @return void
          */
          public function boot()
          {
          Issue::observe(IssueObserver::class);
          }

          /**
          * Register the service provider.
          *
          * @return void
          */
          public function register()
          {
          //
          }
          }


          You could also just do this in your App/Issue model.



          public static function boot()
          {
          parent::boot();

          static::updating(function ($issue) {
          if($issue->status == 'complete') {
          $issue->issue_id = null;
          }
          })
          }


          Obviously, you would need to listen on the events that suit your needs. This is just an example. You could take a look at all the available model events here.






          share|improve this answer


























          • calling save in updated does this not call infinitly updated ?

            – Aurel
            Jan 1 at 16:55











          • @Aurel Nice catch. Edited, thanks :)

            – Mozammil
            Jan 1 at 16:58











          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%2f53997172%2fautomatically-change-model-value-if-another-value-updates%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














          You could make use of Observers.



          For example, to observe the Issue model, you could generate an Observer as such:



          php artisan make:observer IssueObserver --model=Issue


          This will produce an observer where you could listen to many model events.



          <?php

          namespace AppObservers;

          use AppIssue;

          class IssueObserver
          {

          /**
          * Handle the Issue "updating" event.
          *
          * @param AppIssue $Issue
          * @return void
          */
          public function updating(Issue $issue)
          {
          if($issue->status == 'complete') {
          $issue->issue_id = null;
          }
          }
          }


          To register the Observer, you would need to add this to AppServiceProvider@boot()



          <?php

          namespace AppProviders;

          use AppIssue;
          use AppObserversIssueObserver;
          use IlluminateSupportServiceProvider;

          class AppServiceProvider extends ServiceProvider
          {
          /**
          * Bootstrap any application services.
          *
          * @return void
          */
          public function boot()
          {
          Issue::observe(IssueObserver::class);
          }

          /**
          * Register the service provider.
          *
          * @return void
          */
          public function register()
          {
          //
          }
          }


          You could also just do this in your App/Issue model.



          public static function boot()
          {
          parent::boot();

          static::updating(function ($issue) {
          if($issue->status == 'complete') {
          $issue->issue_id = null;
          }
          })
          }


          Obviously, you would need to listen on the events that suit your needs. This is just an example. You could take a look at all the available model events here.






          share|improve this answer


























          • calling save in updated does this not call infinitly updated ?

            – Aurel
            Jan 1 at 16:55











          • @Aurel Nice catch. Edited, thanks :)

            – Mozammil
            Jan 1 at 16:58
















          0














          You could make use of Observers.



          For example, to observe the Issue model, you could generate an Observer as such:



          php artisan make:observer IssueObserver --model=Issue


          This will produce an observer where you could listen to many model events.



          <?php

          namespace AppObservers;

          use AppIssue;

          class IssueObserver
          {

          /**
          * Handle the Issue "updating" event.
          *
          * @param AppIssue $Issue
          * @return void
          */
          public function updating(Issue $issue)
          {
          if($issue->status == 'complete') {
          $issue->issue_id = null;
          }
          }
          }


          To register the Observer, you would need to add this to AppServiceProvider@boot()



          <?php

          namespace AppProviders;

          use AppIssue;
          use AppObserversIssueObserver;
          use IlluminateSupportServiceProvider;

          class AppServiceProvider extends ServiceProvider
          {
          /**
          * Bootstrap any application services.
          *
          * @return void
          */
          public function boot()
          {
          Issue::observe(IssueObserver::class);
          }

          /**
          * Register the service provider.
          *
          * @return void
          */
          public function register()
          {
          //
          }
          }


          You could also just do this in your App/Issue model.



          public static function boot()
          {
          parent::boot();

          static::updating(function ($issue) {
          if($issue->status == 'complete') {
          $issue->issue_id = null;
          }
          })
          }


          Obviously, you would need to listen on the events that suit your needs. This is just an example. You could take a look at all the available model events here.






          share|improve this answer


























          • calling save in updated does this not call infinitly updated ?

            – Aurel
            Jan 1 at 16:55











          • @Aurel Nice catch. Edited, thanks :)

            – Mozammil
            Jan 1 at 16:58














          0












          0








          0







          You could make use of Observers.



          For example, to observe the Issue model, you could generate an Observer as such:



          php artisan make:observer IssueObserver --model=Issue


          This will produce an observer where you could listen to many model events.



          <?php

          namespace AppObservers;

          use AppIssue;

          class IssueObserver
          {

          /**
          * Handle the Issue "updating" event.
          *
          * @param AppIssue $Issue
          * @return void
          */
          public function updating(Issue $issue)
          {
          if($issue->status == 'complete') {
          $issue->issue_id = null;
          }
          }
          }


          To register the Observer, you would need to add this to AppServiceProvider@boot()



          <?php

          namespace AppProviders;

          use AppIssue;
          use AppObserversIssueObserver;
          use IlluminateSupportServiceProvider;

          class AppServiceProvider extends ServiceProvider
          {
          /**
          * Bootstrap any application services.
          *
          * @return void
          */
          public function boot()
          {
          Issue::observe(IssueObserver::class);
          }

          /**
          * Register the service provider.
          *
          * @return void
          */
          public function register()
          {
          //
          }
          }


          You could also just do this in your App/Issue model.



          public static function boot()
          {
          parent::boot();

          static::updating(function ($issue) {
          if($issue->status == 'complete') {
          $issue->issue_id = null;
          }
          })
          }


          Obviously, you would need to listen on the events that suit your needs. This is just an example. You could take a look at all the available model events here.






          share|improve this answer















          You could make use of Observers.



          For example, to observe the Issue model, you could generate an Observer as such:



          php artisan make:observer IssueObserver --model=Issue


          This will produce an observer where you could listen to many model events.



          <?php

          namespace AppObservers;

          use AppIssue;

          class IssueObserver
          {

          /**
          * Handle the Issue "updating" event.
          *
          * @param AppIssue $Issue
          * @return void
          */
          public function updating(Issue $issue)
          {
          if($issue->status == 'complete') {
          $issue->issue_id = null;
          }
          }
          }


          To register the Observer, you would need to add this to AppServiceProvider@boot()



          <?php

          namespace AppProviders;

          use AppIssue;
          use AppObserversIssueObserver;
          use IlluminateSupportServiceProvider;

          class AppServiceProvider extends ServiceProvider
          {
          /**
          * Bootstrap any application services.
          *
          * @return void
          */
          public function boot()
          {
          Issue::observe(IssueObserver::class);
          }

          /**
          * Register the service provider.
          *
          * @return void
          */
          public function register()
          {
          //
          }
          }


          You could also just do this in your App/Issue model.



          public static function boot()
          {
          parent::boot();

          static::updating(function ($issue) {
          if($issue->status == 'complete') {
          $issue->issue_id = null;
          }
          })
          }


          Obviously, you would need to listen on the events that suit your needs. This is just an example. You could take a look at all the available model events here.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jan 1 at 16:58

























          answered Jan 1 at 16:46









          MozammilMozammil

          6,230420




          6,230420













          • calling save in updated does this not call infinitly updated ?

            – Aurel
            Jan 1 at 16:55











          • @Aurel Nice catch. Edited, thanks :)

            – Mozammil
            Jan 1 at 16:58



















          • calling save in updated does this not call infinitly updated ?

            – Aurel
            Jan 1 at 16:55











          • @Aurel Nice catch. Edited, thanks :)

            – Mozammil
            Jan 1 at 16:58

















          calling save in updated does this not call infinitly updated ?

          – Aurel
          Jan 1 at 16:55





          calling save in updated does this not call infinitly updated ?

          – Aurel
          Jan 1 at 16:55













          @Aurel Nice catch. Edited, thanks :)

          – Mozammil
          Jan 1 at 16:58





          @Aurel Nice catch. Edited, thanks :)

          – Mozammil
          Jan 1 at 16:58




















          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%2f53997172%2fautomatically-change-model-value-if-another-value-updates%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

          Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

          Does disintegrating a polymorphed enemy still kill it after the 2018 errata?

          A Topological Invariant for $pi_3(U(n))$