I've got a form for a job application, where administrator needs to pick from the list of certain user ids. The list contains only user ids of type "employer", however I want to validate the administrator input, so if he manually inserts an id that doesn't exist or is for user of different type than "employer", the validation should fail. I thought that code to do this would be:
new Zend_Validate_Db_RecordExists(
array(
'table' => 'users',
'field' => 'id',
'exclude' => "mode != 'employer'"
)
)
so, I'm searching for all the records in table users, excluding those where mode != 'employer' - if such record exists, where id is equal to the one picked from input, it passes the validation. However, the code above doesn't work - I have to do 'exclude' => "mode = 'employer'"
, so exclude actually equals where statement. My understanding of the logic here is wrong - can somebody tell me why?
PHP: 5.2.17, Zend: 1.10.4
EDIT: (the comment to @ro ko enquiries, as it probably clears things out)
Please find the table and sample code here: http://pastebin.com/C7AXMNTZ . In my understanding this should return valid for Joker (is employer), but false for Kingpin (not employer) and Poison Ivy (not in the db) - as you can see the results are not what I'm expecting.
As per documentation (search for The above example will check the table to ensure no records other than the one where id = $user_id contains the value $username.
) the exclude option indeed works as WHERE statement.
I can only say that whoever though that using such keyword for this functionality is a good idea had a wicked sense of humor.