Monday, February 6, 2012

Re: How to "custom belongsto" in CakePHP 2?

I'm still trying but there's no luck : (

On 3 ene, 17:41, Cristian Deluxe <djcristiandel...@gmail.com> wrote:
> Thanks AD7six, i also tried it in my previous test but Cake never
> render the page, it seems to make a loop and it fails with this error:
>
> Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp
> \htdocs\MyAppName\trunk\lib\Cake\Model\Datasource\DboSource.php on
> line 1436
>
>         var $belongsTo = array(
>                         'Wdevice' => array(
>                                                                 'className' => 'Wdevice',
>                                                                 'foreignKey' => false,
>                                                                 'conditions' => array('Wdevice.device_mac =
> Radpostauth.username')
>
>                         )
>         );
>
> If i do the SQL query in phpMyAdmin it works correctly:
>
> Mostrando registros 0 - 29 ( 50 total, La consulta tardó 0.2787 seg)
> [id: 20179 - 20130]
> (Sorry for the Spanish)
>
> SELECT  `Radpostauth`.`id` ,  `Radpostauth`.`username` ,
> `Radpostauth`.`pass` ,  `Radpostauth`.`reply` ,
> `Radpostauth`.`authdate` ,  `Wdevice`.`id` ,
> `Wdevice`.`wcontract_id` ,  `Wdevice`.`device_mac` ,
> `Wdevice`.`wdevices_model_id` ,  `Wdevice`.`created` ,
> `Wdevice`.`modified`
> FROM  `radpostauth` AS  `Radpostauth`
> LEFT JOIN  `wdevices` AS  `Wdevice` ON (  `Wdevice`.`device_mac` =
> `Radpostauth`.`username` )
> WHERE 1 =1
> ORDER BY  `Radpostauth`.`id` DESC
> LIMIT 50
>
> And if i write:
>                                                                 'conditions' => array('Wdevice.device_mac =
> Radpostauth.username' => '')
>
> It works (don't enter in a loop) but the query fails:
>
> SELECT  `Radpostauth`.`id` ,  `Radpostauth`.`username` ,
> `Radpostauth`.`pass` ,  `Radpostauth`.`reply` ,
> `Radpostauth`.`authdate` ,  `Wdevice`.`id` ,
> `Wdevice`.`wcontract_id` ,  `Wdevice`.`device_mac` ,
> `Wdevice`.`wdevices_model_id` ,  `Wdevice`.`created` ,
> `Wdevice`.`modified`
> FROM  `radpostauth` AS  `Radpostauth`
> LEFT JOIN  `wdevices` AS  `Wdevice` ON (  `Wdevice`.`device_mac` =
> `Radpostauth`.`username` '') // <- note the ( '' )
> WHERE 1 =1
> ORDER BY  `Radpostauth`.`id` DESC
> LIMIT 50
>
> SQLSTATE[42000]: Syntax error or access violation: 1064 You have an
> error in your SQL syntax; check the manual that corresponds to your
> MySQL server version for the right syntax to use near ''') WHERE 1 = 1
> ORDER BY `Radpostauth`.`id` desc LIMIT 50' at line 1
>
> So i don't know what to do now : (
>
> Thanks for your help guys : )
>
> On 3 ene, 12:19, AD7six <andydawso...@gmail.com> wrote:
>
>
>
>
>
>
>
> > On Jan 3, 11:23 am, CristianDeluxe<djcristiandel...@gmail.com>
> > wrote:
>
> > > Hey thanks : )
>
> > > I've tried this but seems like CakePHP doesn't parse the condition
> > > correctly:
>
> > >         var $belongsTo = array(
> > >                         'Wdevice' => array(
> > >                                                                 'className' => 'Wdevice',
> > >                                                                 'foreignKey' => false,
> > >                                                                 'conditions' => array('Wdevice.device_mac' =>
> > > 'Radpostauth.username')
>
> > If the above did what you wanted cake would be rife with sql injection
> > problems. Thankfully it does exactly what you asked and tests where
> > device_mac = the string you've typed in the conditions.
>
> > You want
> > array('Wdevice.device_mac = Radpostauth.username')
>
> > probably.
>
> > AD

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

No comments: