Automatically Change Model Value If Another Value Updates
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
add a comment |
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
add a comment |
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
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
php laravel eloquent
edited Jan 1 at 22:16
Karl Hill
3,10622243
3,10622243
asked Jan 1 at 16:40
jdawgjdawg
1721214
1721214
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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.
callingsave
inupdated
does this not call infinitlyupdated
?
– Aurel
Jan 1 at 16:55
@Aurel Nice catch. Edited, thanks :)
– Mozammil
Jan 1 at 16:58
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
callingsave
inupdated
does this not call infinitlyupdated
?
– Aurel
Jan 1 at 16:55
@Aurel Nice catch. Edited, thanks :)
– Mozammil
Jan 1 at 16:58
add a comment |
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.
callingsave
inupdated
does this not call infinitlyupdated
?
– Aurel
Jan 1 at 16:55
@Aurel Nice catch. Edited, thanks :)
– Mozammil
Jan 1 at 16:58
add a comment |
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.
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.
edited Jan 1 at 16:58
answered Jan 1 at 16:46
MozammilMozammil
6,230420
6,230420
callingsave
inupdated
does this not call infinitlyupdated
?
– Aurel
Jan 1 at 16:55
@Aurel Nice catch. Edited, thanks :)
– Mozammil
Jan 1 at 16:58
add a comment |
callingsave
inupdated
does this not call infinitlyupdated
?
– 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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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