Laravel != operator in where not working
laravel-4, mysql, php
Solution
`NULL` values are not equal or not equal to anything else.
So `column != NULL` is always falsy as well as `column = NULL`
To check if a column contains `NULL` value you need to use `IS NULL` operator.
In case of laravel db query generator you could use
->whereNull('video_of_week_expired')
method.
PS: if `video_of_week_expired` is assumed to be a flag-alike column, you better make it `NOT NULL` and use `0`/`1` values, instead of `NULL`/`1`
Problem
This query is returning null when an object is expected. ``` $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; ``` A record might have `is_video_of_the_week = 1` and `video_of_week_expired = NULL` but the above query returns null. Any ideas?