Sometimes we have to make a data model that involves various flags to indicate different statuses for an object. For example, a Post can have attributes like active or comments_allowed which can have either the value 0 (off) or 1 (on). Often we wish to toggle these values; how do this in an elegant fashion? (scroll to the bottom for the one-liner)
We could grab the value:
$post = $this->Post->read(null, $id);
if($post['Post']['active'] == 1) {
$post['Post']['active'] = 0;
} else {
$post['Post']['active'] = 1;
}
$this->Post->save($post);
More elegant would be to use a ternary operator like so:
$post = $this->Post->read(null, $id);
$post['Post']['active'] = $post['Post']['active'] == 1 ? 0 : 1;
$this->Post->save($post);
But in principle, we do not even need to grab the old value from the database to toggle the value:
$post = $this->Post->query("UPDATE `posts` SET `active`= IF(`active`=1, 0, 1) WHERE `id`='$id'");
We can even get rid of the if statement:
$post = $this->Post->query("UPDATE `posts` SET `active`= 1 - `active` WHERE `id`='$id'");
And there you go, a simple one-liner.
No post data.
No querystring data.
To view Cookies, add CookieComponent to Controller
Query | Affected | Num. rows | Took (ms) | Actions |
---|---|---|---|---|
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`posts` AS `Post` WHERE `Post`.`id` = 14 | 1 | 1 | 0 | |
SELECT `Post`.`active`, `Post`.`id` FROM `ivofilot_nl`.`posts` AS `Post` WHERE `Post`.`id` = 14 LIMIT 1 | 1 | 1 | 0 | |
SELECT `Comment`.`email`, `Comment`.`comment`, `Comment`.`id`, `Comment`.`post_id`, `Comment`.`created` FROM `ivofilot_nl`.`comments` AS `Comment` WHERE `Comment`.`post_id` = (14) | 0 | 0 | 1 | maybe slow |
SELECT `Tag`.`id`, `Tag`.`name`, `Tag`.`icon`, `Tag`.`color`, `PostsTag`.`post_id`, `PostsTag`.`tag_id` FROM `ivofilot_nl`.`tags` AS `Tag` JOIN `ivofilot_nl`.`posts_tags` AS `PostsTag` ON (`PostsTag`.`post_id` = 14 AND `PostsTag`.`tag_id` = `Tag`.`id`) | 2 | 2 | 1 | maybe slow |
UPDATE `posts` SET `watched`=`watched`+1 WHERE `id`='14' | 1 | 1 | 0 | |
SELECT `Comment`.`id`, `Comment`.`email`, `Comment`.`comment`, `Comment`.`post_id`, `Comment`.`parent_id`, `Comment`.`lft`, `Comment`.`rght`, `Comment`.`active`, `Comment`.`code`, `Comment`.`deleted`, `Comment`.`created`, `Comment`.`modified`, `Post`.`id`, `Post`.`title`, `Post`.`content`, `Post`.`watched`, `Post`.`active`, `Post`.`created`, `Post`.`modified`, `ParentComment`.`id`, `ParentComment`.`email`, `ParentComment`.`comment`, `ParentComment`.`post_id`, `ParentComment`.`parent_id`, `ParentComment`.`lft`, `ParentComment`.`rght`, `ParentComment`.`active`, `ParentComment`.`code`, `ParentComment`.`deleted`, `ParentComment`.`created`, `ParentComment`.`modified` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 14 AND `Comment`.`active` = '1' | 0 | 0 | 1 | maybe slow |
SELECT `Tag`.`id`, `Tag`.`name`, `Tag`.`icon`, `Tag`.`color` FROM `ivofilot_nl`.`tags` AS `Tag` inner JOIN `ivofilot_nl`.`posts_tags` AS `PostsTag` ON (`Tag`.`id` = `PostsTag`.`tag_id`) inner JOIN `ivofilot_nl`.`posts` AS `Post` ON (`PostsTag`.`post_id` = `Post`.`id`) WHERE `Post`.`id` = 14 | 2 | 2 | 1 | maybe slow |
SELECT `Post`.`id`, `Post`.`title`, `Post`.`content`, `Post`.`watched`, `Post`.`active`, `Post`.`created`, `Post`.`modified`, `PostsTag`.`post_id`, `PostsTag`.`tag_id` FROM `ivofilot_nl`.`posts` AS `Post` JOIN `ivofilot_nl`.`posts_tags` AS `PostsTag` ON (`PostsTag`.`tag_id` IN (14, 6) AND `PostsTag`.`post_id` = `Post`.`id`) | 5 | 5 | 1 | maybe slow |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 14 | 1 | 1 | 1 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 11 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 14 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 15 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 16 | 1 | 1 | 0 | |
SELECT `Post`.`id`, `Post`.`title`, `Post`.`content`, `Post`.`watched`, `Post`.`active`, `Post`.`created`, `Post`.`modified` FROM `ivofilot_nl`.`posts` AS `Post` WHERE `Post`.`id` = 14 LIMIT 1 | 1 | 1 | 1 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 14 | 1 | 1 | 0 |
Peak Memory Use 5.15 MB
Message | Memory use |
---|---|
Component initialization | 791 KB |
Controller action start | 837 KB |
Controller render start | 1.34 MB |
View render complete | 1.62 MB |
Total Request Time: 172 (ms)
Message | Time in ms | Graph |
---|---|---|
Core Processing (Derived from $_SERVER["REQUEST_TIME"]) | 11.13 | |
Event: Controller.initialize | 0.10 | |
Event: Controller.startup | 3.48 | |
Controller action | 76.79 | |
Event: Controller.beforeRender | 34.09 | |
» Processing toolbar data | 33.99 | |
Rendering View | 10.12 | |
» Event: View.beforeRender | 0.04 | |
» Rendering APP/View/Posts/view.ctp | 8.50 | |
» » Rendering APP/View/Elements/code_highlighting.ctp | 0.32 | |
» » Rendering APP/View/Elements/post.commentform.ctp | 6.16 | |
» » » Rendering APP/View/Elements/post.comment.captcha.ctp | 0.94 | |
» » Rendering APP/View/Elements/post.comments.ctp | 0.06 | |
» » Rendering APP/View/Elements/post.relatedpost.ctp | 0.17 | |
» Event: View.afterRender | 0.02 | |
» Event: View.beforeLayout | 0.02 | |
» Rendering APP/View/Layouts/default.ctp | 0.84 | |
» » Rendering APP/View/Elements/navbar.ctp | 0.20 | |
» » Rendering APP/View/Elements/footer.ctp | 0.18 | |
» » » Rendering APP/View/Elements/biography.ctp | 0.05 | |
Event: View.afterLayout | 0.00 |
Constant | Value |
---|---|
CONFIG | /customers/e/2/e/ivofilot.nl/httpd.www/app/Config/ |
Constant | Value |
---|---|
APP | /customers/e/2/e/ivofilot.nl/httpd.www/app/ |
APP_DIR | app |
APPLIBS | /customers/e/2/e/ivofilot.nl/httpd.www/app/Lib/ |
CACHE | /customers/e/2/e/ivofilot.nl/httpd.www/app/tmp/cache/ |
CAKE | /customers/e/2/e/ivofilot.nl/httpd.www/lib/Cake/ |
CAKE_CORE_INCLUDE_PATH | /customers/e/2/e/ivofilot.nl/httpd.www/lib |
CORE_PATH | /customers/e/2/e/ivofilot.nl/httpd.www/lib/ |
CAKE_VERSION | 2.10.13 |
CSS | /customers/e/2/e/ivofilot.nl/httpd.www/app/webroot/css/ |
CSS_URL | css/ |
DS | / |
FULL_BASE_URL | https://ivofilot.nl |
IMAGES | /customers/e/2/e/ivofilot.nl/httpd.www/app/webroot/img/ |
IMAGES_URL | img/ |
JS | /customers/e/2/e/ivofilot.nl/httpd.www/app/webroot/js/ |
JS_URL | js/ |
LOGS | /customers/e/2/e/ivofilot.nl/httpd.www/app/tmp/logs/ |
ROOT | /customers/e/2/e/ivofilot.nl/httpd.www |
TESTS | /customers/e/2/e/ivofilot.nl/httpd.www/app/Test/ |
TMP | /customers/e/2/e/ivofilot.nl/httpd.www/app/tmp/ |
VENDORS | /customers/e/2/e/ivofilot.nl/httpd.www/vendors/ |
WEBROOT_DIR | webroot |
WWW_ROOT | /customers/e/2/e/ivofilot.nl/httpd.www/app/webroot/ |
Environment Variable | Value |
---|---|
Php Version | 7.4.16 |
Onecom Domain Name | ivofilot.nl |
Onecom Domain Root | /customers/e/2/e/ivofilot.nl/ |
Onecom Memorylimit | 1073741824 |
Onecom Cpu Shares | 1024 |
Onecom Exec | latest |
Onecom Dir Layout Ver | 0 |
Content Length | 0 |
Http Connection | close |
Script Name | /app/webroot/index.php |
Request Uri | /posts/view/14/Toggling+a+database+flag+field+in+CakePHP |
Query String | |
Request Method | GET |
Server Protocol | HTTP/1.1 |
Gateway Interface | CGI/1.1 |
Redirect Url | /app/webroot/posts/view/14/Toggling+a+database+flag+field+in+CakePHP |
Remote Port | 48036 |
Script Filename | /customers/e/2/e/ivofilot.nl/httpd.www/app/webroot/index.php |
Server Admin | support@one.com |
Context Document Root | /var/www |
Context Prefix | |
Request Scheme | https |
Remote Addr | 100.25.42.117 |
Server Port | 80 |
Server Addr | 10.27.35.20 |
Server Name | ivofilot.nl |
Server Software | Apache |
Server Signature | |
Path | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
Http X Varnish | 466290324 |
Http Accept Encoding | gzip |
Http X Onecom Host | ivofilot.nl |
Http X Onecom Brand | one.com |
Http X Forwarded Proto | https |
Http X Onecom Forwarded Proto | https |
Http X Forwarded For | 100.25.42.117 |
Http Host | ivofilot.nl |
Http Accept Language | en-US,en;q=0.5 |
Http Accept | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
Http User Agent | CCBot/2.0 (https://commoncrawl.org/faq/) |
Env Vcv Env Addons Id | one.com |
Env Vcv Token Url | https://wpapi.one.com/api/v1.0/plugins/visualcomposer/activate |
Onecom One Photo Url | https://onephoto.one.com/domain_discover |
Onecom Wp Addons Api | https://wpapi.one.com |
Onecom Webshop Host | webshop2.cst.webpod8-cph3.one.com |
Https | on |
Onecom Tmpdir | /customers/e/2/e/ivofilot.nl//tmp |
Domain Name | ivofilot.nl |
Onecom Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Redirect Status | 200 |
Redirect Env Vcv Env Addons Id | one.com |
Redirect Env Vcv Token Url | https://wpapi.one.com/api/v1.0/plugins/visualcomposer/activate |
Redirect Onecom One Photo Url | https://onephoto.one.com/domain_discover |
Redirect Onecom Wp Addons Api | https://wpapi.one.com |
Redirect Onecom Webshop Host | webshop2.cst.webpod8-cph3.one.com |
Redirect Https | on |
Redirect Onecom Cpu Shares | 1024 |
Redirect Onecom Memorylimit | 1073741824 |
Redirect Onecom Exec | latest |
Redirect Onecom Dir Layout Ver | 0 |
Redirect Onecom Tmpdir | /customers/e/2/e/ivofilot.nl//tmp |
Redirect Onecom Domain Root | /customers/e/2/e/ivofilot.nl/ |
Redirect Onecom Domain Name | ivofilot.nl |
Redirect Domain Name | ivofilot.nl |
Redirect Onecom Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Redirect Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Redirect Redirect Status | 200 |
Redirect Redirect Env Vcv Env Addons Id | one.com |
Redirect Redirect Env Vcv Token Url | https://wpapi.one.com/api/v1.0/plugins/visualcomposer/activate |
Redirect Redirect Onecom One Photo Url | https://onephoto.one.com/domain_discover |
Redirect Redirect Onecom Wp Addons Api | https://wpapi.one.com |
Redirect Redirect Onecom Webshop Host | webshop2.cst.webpod8-cph3.one.com |
Redirect Redirect Https | on |
Redirect Redirect Onecom Cpu Shares | 1024 |
Redirect Redirect Onecom Memorylimit | 1073741824 |
Redirect Redirect Onecom Exec | latest |
Redirect Redirect Onecom Dir Layout Ver | 0 |
Redirect Redirect Onecom Tmpdir | /customers/e/2/e/ivofilot.nl//tmp |
Redirect Redirect Onecom Domain Root | /customers/e/2/e/ivofilot.nl/ |
Redirect Redirect Onecom Domain Name | ivofilot.nl |
Redirect Redirect Domain Name | ivofilot.nl |
Redirect Redirect Onecom Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Redirect Redirect Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Fcgi Role | RESPONDER |
Php Self | /app/webroot/index.php |
Request Time Float | 1619016613.9805 |
Request Time | 1619016613 |