php - Laravel != 运算符在不工作的地方

标签 php mysql laravel-4

当需要对象时,此查询返回 null。

$vow = DB::table('media_featured')->where('is_video_of_the_week', 1)->
where('video_of_week_expired', '!=', 1)->first();

CREATE TABLE `media_featured` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`media_id` int(10) unsigned DEFAULT NULL,
`is_video_of_the_week` tinyint(1) DEFAULT NULL,
`is_featured` tinyint(1) DEFAULT NULL,
`video_of_week_expired` tinyint(1) DEFAULT NULL,
`featured_expired` tinyint(1) DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `media_featured_media_id_foreign` (`media_id`),
CONSTRAINT `media_featured_media_id_foreign` FOREIGN KEY (`media_id`) REFERENCES `media`        (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

记录可能有 is_video_of_the_week = 1video_of_week_expired = NULL 但上述查询返回 null。

有什么想法吗?

最佳答案

NULL 值不等于或不等于任何其他值。

所以 column != NULLcolumn = NULL 一样总是假的

要检查列是否包含 NULL 值,您需要使用 IS NULL 运算符。

如果是 laravel 数据库查询生成器,你可以使用

->whereNull('video_of_week_expired')

方法。

PS:如果 video_of_week_expired 被假定为类似标志的列,您最好将其设置为 NOT NULL 并使用 0/1 值,而不是 NULL/1

关于php - Laravel != 运算符在不工作的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23260171/

相关文章:

php - Linux PHP ExtractTo 返回整个路径而不是文件结构

php - Amazon S3 在创建对象时抛出 cURL 错误

java - 无法在 MySql JDBC 中获取自动生成的 ID

php - 我搞乱了 phpmyadmin 和/或 mysql 的 root@localhost。如何重置密码?

php - Laravel 4 除了 Controller 构造函数中的过滤器

php - Laravel Eloquent ORM firstOrNew 批量赋值异常

php - 在 Laravel 中保存后返回主 ID

php - 发布/获取 excel 数据的最佳方式是什么

php - 在 MySQL 中转换日期

php - MYSQL表结构