繁体   English   中英

CakePHP-获取数据,检查TRUE / FALSE

[英]CakePHP - Fetching data, checking against TRUE/FALSE

在数据库中,表具有以下结构:

CREATE TABLE `tbl_app_versions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app` varchar(100) DEFAULT NULL,
  `version` varchar(50) DEFAULT NULL,
  `force_update` bit(1) DEFAULT NULL,
  `is_active` bit(1) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

请注意,“ force_update”是位。 可以是1或0。

在我的代码中,我获取数据并想查看该值是1还是0。由于某种原因,CakePHP在两种情况下均返回以下内容:

Array
(
    [0] => Array
        (
            [Platforms] => Array
                (
                    [id] => 1
                    [app] => ios
                    [version] => 1.0.042
                    [force_update] => 
                    [is_active] => 
                    [created] => 
                    [modified] => 
                )

        )

    [1] => Array
        (
            [Platforms] => Array
                (
                    [id] => 2
                    [app] => android
                    [version] => 1.0.041
                    [force_update] => 
                    [is_active] => 
                    [created] => 
                    [modified] => 
                )
        )
)

无论其值如何,force_update都显示相同的内容。 我在大多数表中都使用了bit,因此必须能够执行此检查。

这个:

<?php echo ($value['Platforms']['force_update']) ? 'Yes' : 'No'; ?>

要么:

<?php echo ($value['Platforms']['force_update'] = TRUE) ? 'Yes' : 'No'; ?>

要么:

<?php echo ($value['Platforms']['force_update'] == TRUE) ? 'Yes' : 'No'; ?>

尽管我的数据是:

'1', 'ios', '1.0.042', '0', '1', NULL, NULL
'2', 'android', '1.0.041', '1', '1', NULL, NULL

在数据库中使用位时,如果字段为NULL,则返回FALSE,否则返回TRUE。

因此,如果它在字段中有任何值(1或0),它仍将返回TRUE。

解决方案:将字段从bit更改为tinyint。 或在进行数据操作时,以FALSE表示该字段为NULL,并以TRUE表示该值。 这样,每次我读取数据时,它要么为NULL要么为值,然后基于此我可以在视图中显示正确的消息。

您可以从bit切换为tinyint(1),但我认为您的if语句是错误的。

尝试

<?php echo (!empty($value['Platforms']['force_update'])) ? 'Yes' : 'No'; ?>

empty()将捕获无效NULL,0表示“否”,而只有1表示“是”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM