<p>This is a known behavioral issue. PHP considers <code>0</code>, <code>"0"</code>, <code>false</code>, and similar values to be <a href="http://php.net/manual/en/function.empty.php#refsect1-function.empty-returnvalues">“empty”</a>, and Craft only factors most criteria param values into the query if they are not empty. So setting a Lightswitch field’s criteria param to <code>'0'</code> is the same as not setting it at all.</p>

<p>The workaround is to use <code>not 1</code>:</p>

<pre><code>{% set results = craft.entries.section('events').lightSwitchField('not 1') %}
</code></pre>

CC BY-SA 3.0
2017-05-18T15:35:59.897Z
I've just faced this problem, and it looks like in Craft 3 it's looking for true (or false / not true)
Adam Hopkinson
CC BY-SA 3.0
2015-10-14T16:23:05.530Z
2015-10-16T13:59:07.377Z
2015-10-16T13:59:07.377Z
Lindsey D
<p>This is super simple, and I don't get why it's not working.</p>

<pre><code>{% set results = craft.entries.section('events').lightSwitchField('1') %}
</code></pre>

<p>Returns all entries in Events where the light switch field is green.</p>

<pre><code>{% set results = craft.entries.section('events').lightSwitchField('0') %}
</code></pre>

<p>Returns all entries in Events. Period. Not all entries that the lightswitch is set to off.</p>

<p>I want to get all entries where the lightswitch field is off. Later I'm going to chain some other fields to the query too.</p>

<p>What have I not understood about how this works?</p>

CC BY-SA 3.0
2015-10-14T16:19:33.450Z
Have you tried using `true` and `false` in place of `'1'` and `'0`'?
Joshua Baker
CC BY-SA 3.0
2015-10-15T08:41:05.440Z
I had, it makes no difference. Answer was provided by Lindsey below: it's a Craft quirk :/
Matt Wilcox
<entries>
craft.entries and lightswitch
# craft.entries and lightswitch

(Asked by: username_0 on 2015-10-14)

This is super simple, and I don't get why it's not working.
{% set results = craft.entries.section('events').lightSwitchField('1') %}

Returns all entries in Events where the light switch field is green.
{% set results = craft.entries.section('events').lightSwitchField('0') %}

Returns all entries in Events. Period. Not all entries that the lightswitch is set to off.
I want to get all entries where the lightswitch field is off. Later I'm going to chain some other fields to the query too.
What have I not understood about how this works?

**Tags:** entries
> **Comments:**
> **username_1**: Have you tried using `true` and `false` in place of `'1'` and `'0`'?  
> **username_0**: I had, it makes no difference. Answer was provided by Lindsey below: it's a Craft quirk :/  

---

## 1 answers

### Answer by username_2 on 2015-10-14. Score: 24 | Accepted answer

This is a known behavioral issue. PHP considers 0, "0", false, and similar values to be “empty”, and Craft only factors most criteria param values into the query if they are not empty. So setting a Lightswitch field’s criteria param to '0' is the same as not setting it at all.
The workaround is to use not 1:
{% set results = craft.entries.section('events').lightSwitchField('not 1') %}

> **Comments:**
> **username_3**: I've just faced this problem, and it looks like in Craft 3 it's looking for true (or false / not true)  

---

