Angus Johnson
Wed, 15 Nov 2006 04:07:58 -0800
Chris, I don't have access to the work servers this evening but from memory I modded the reactor framework objectDAO(??). Upshot was that the mods converted any tinyint column types to boolean. Downside is that we have to enforce a practice of only using TINYINT for boolean in Mysql tables. I can post the modded code tomorrow if interested. Angus On 11/11/06, Chris Blackwell <[EMAIL PROTECTED]> wrote:
I'm not sure that has any advantages, MySQL stores pointers to the values
you have assigned in the ENUM, in the example you've given
index 0 => 1
index 1 => 0
Also, by default that would throw a Test.Active.invalidLength error if you
did setActive(true)
------------------------------
*From:* [EMAIL PROTECTED] [EMAIL PROTECTED] *On
Behalf Of *Sal Valverde
*Sent:* 10 November 2006 18:34
*To:* reactor@doughughes.net
*Subject:* Re: [Reactor for CF] boolean vlaues in mysql
I've been using ENUM('1','0')
thanks
sal
Chris Blackwell wrote:
Heres some sample code that demonstrates the problem i have..
CREATE TABLE `Test` (
`TestId` int(10) unsigned NOT NULL auto_increment,
`Active` tinyint(1) NOT NULL,
PRIMARY KEY (`TestId`)
)
<cfset test = reactor.createRecord("Test")>
<cfset test.setActive(true)>
<cfset test.validate()>
<cfdump var="#test._getErrorCollection().getErrors()#">
Results in a Test.Active.invalidType.
This result is totally expected, as Reactor has to validate a TINYINT as
numeric by default. Obviously it's no problem to use 1/0 when hard coding
the values, but i ran into the problem when processing a checkbox for an
object like this.
<cfset user.setActive(structkeyexists(form, "active"))>
You can pass in "true" or "false" to the record and save it because in
MySQL True/False are just synonyms for 1/0 and get converted internally (Try
SELECT true + 0). You just can't validate it "out of the box" with the
default validator.
For now overriding the setter will do the job
<cffunction name="setActive" access="public" output="false"
returntype="void">
<cfargument name="Active" type="boolean" required="yes">
<cfset super.setActive(iif(arguments.Active, 1, 0))>
</cffunction>
------------------------------
*From:* [EMAIL PROTECTED] [EMAIL PROTECTED]<[EMAIL PROTECTED]>]
*On Behalf Of *Dave Shuck
*Sent:* 10 November 2006 17:28
*To:* reactor@doughughes.net
*Subject:* Re: [Reactor for CF] boolean vlaues in mysql
We just set the column type to BOOLEAN in MySQL 5 (although it later
magically becomes TINYINT(1)), and pass ColdFusion boolean values with no
issues whatsoever.
~Dave
On 11/10/06, Chris Blackwell <[EMAIL PROTECTED]> wrote:
>
>
> How are people representing boolean values in mysql (4 or 5) with
> reactor? I've always used TINYINT(1) but with reactor its causing a
> problem because, by default, it validates the field as numeric so I get
> an invalidType error.
>
> I've tried the BIT(1) datatype for MySQL5, but CF can't convert the
> value to a boolean, I'm actually not sure what this returns now, it used
> to be a synonym for TINYINT(1).
> BOOL/BOOLEAN are converted to TINYINT(1) by MySQL so those type are
> useless, the mysql ObjectDAO will never see this type.
>
> For now I'm overriding the setColumn(bool) to convert the boolean to 1/0
> and call super.setColumn(int).
>
> I've only just run into this issue as I've started using Reactors
> validation instead of my own.
>
> Chris Blackwell
> Web Developer
>
> Telephone: +44 (0)117 373 1465
> Email: [EMAIL PROTECTED]
>
> This email is intended for the use of the named recipient(s) only. Any
> information contained within this message or any of its attachments may
> be confidential and privileged information. Any unauthorized
> disclosure, reproduction, distribution or other dissemination or use of
> this communication is strictly prohibited.
>
>
>
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> -- -- --
> Reactor for ColdFusion Mailing List
> reactor@doughughes.net
> Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> -- -- --
>
>
--
~Dave Shuck
[EMAIL PROTECTED]
www.daveshuck.com
Where's your Spot?
www.instantspot.com
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Reactor for ColdFusion Mailing List
reactor@doughughes.net
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Reactor for ColdFusion Mailing List
reactor@doughughes.net
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Reactor for ColdFusion Mailing List
reactor@doughughes.net
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Reactor for ColdFusion Mailing List
reactor@doughughes.net
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Reactor for ColdFusion Mailing List reactor@doughughes.net Archives at: http://www.mail-archive.com/reactor%40doughughes.net/ -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --