Found the problem. I can't call functions from another controller
unless the function is declared with the Model.

On 20 jul, 00:23, Jeremy Burns | Class Outfit
<[email protected]> wrote:
> What does your users controller look like?
>
> Jeremy Burns
> Class Outfit
>
> http://www.classoutfit.com
>
> On 20 Jul 2011, at 02:11, Diogo wrote:
>
>
>
>
>
>
>
> > The error.
>
> > Warning (512): SQL Error: 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 'index' at line 1 [CORE/cake/libs/model/
> > datasources/dbo_source.php, line 684]
> > Code | Context
>
> > DboSource::showQuery() - CORE/cake/libs/model/datasources/
> > dbo_source.php, line 684
> > DboSource::execute() - CORE/cake/libs/model/datasources/
> > dbo_source.php, line 266
> > DboSource::fetchAll() - CORE/cake/libs/model/datasources/
> > dbo_source.php, line 410
> > DboSource::query() - CORE/cake/libs/model/datasources/dbo_source.php,
> > line 364
> > Model::call__() - CORE/cake/libs/model/model.php, line 502
> > Overloadable::__call() - CORE/cake/libs/overloadable_php5.php, line 50
> > Role::index() - [internal], line ??
> > UsersController::related_clients() - APP/controllers/
> > users_controller.php, line 63
> > Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 204
> > Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 171
> > Object::requestAction() - CORE/cake/libs/object.php, line 95
> > include - APP/views/users/index.ctp, line 2
> > View::_render() - CORE/cake/libs/view/view.php, line 731
> > View::render() - CORE/cake/libs/view/view.php, line 426
> > Controller::render() - CORE/cake/libs/controller/controller.php, line
> > 909
> > Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 207
>
> > On 18 jul, 18:07, Diogo <[email protected]> wrote:
> >> UPDATE
>
> >> I created a separated project to test this. Created 3 tables (users,
> >> projects, roles).
>
> >> Users: id, name
>
> >> Projects: id, name
>
> >> Roles: user_id, project_id, role
>
> >> Bake them all with Cake. Now I'm trying to call Role's index function
> >> in Users Controller, but it gives me the same error. Could this
> >> possibly be a bug? Or maybe I'm missing something very stupid here. :(
>
> >> On 17 jul, 12:25, Diogo <[email protected]> wrote:
>
> >>> Hi David, thank you for answering.
>
> >>> Well I double checked the function name, where it has been created and
> >>> also if the model UserRole is being loaded up (by calling get_class).
> >>> Them model/controller/view were all generated by Bake, so I guess
> >>> everything is allright. Even when I try to call a non-custom function
> >>> like "index", it returns me the same error. It is, as you said, the
> >>> model functions aren't being loaded. I just don't know how to do it. :
> >>> (
>
> >>> On 17 jul, 01:22, David Kullmann <[email protected]> wrote:
>
> >>>> Diogo:
>
> >>>> Notice how in your trace it shows this:
>
> >>>>     Model::call__() - CORE/cake/libs/model/model.php, line 502
>
> >>>> Looking at the Model::call__() method you can see that it is designed
> >>>> to handle custom function calls:
>
> >>>> "Handles custom method calls, like findBy<field> for DB models"
>
> >>>> Your model does not have the method "get_id_users" so it is falling
> >>>> back on Model::call__() and failing. You need to make sure you are
> >>>> calling the correct method, on the correct model, and that the model
> >>>> you are calling the method on is loaded.
>
> >>>> -DK
>
> >>>> On Jul 16, 6:03 pm, Diogo <[email protected]> wrote:
>
> >>>>> I've been trying to solve this for the past 3 days and nothing has
> >>>>> came up. I've researched a lot and this errors usually come up when
> >>>>> CakePHP can't find my model or I have some name wrong in my
> >>>>> relationships. Well I tried looking at everything, but still couldn't
> >>>>> find where the error is.
> >>>>> I have a User model, a Project model and a UserRole model which is the
> >>>>> join table used by the hasMany through relationship.
>
> >>>>> File names:
>
> >>>>>> user.php project.php user_role.php
>
> >>>>> Models:
>
> >>>>>     class UserRole extends AppModel {
> >>>>>     ...
> >>>>>     var $belongsTo = array(
> >>>>>                 'User' => array(
> >>>>>                         'className' => 'User',
> >>>>>                         'foreignKey' => 'user_id',
> >>>>>                         'conditions' => '',
> >>>>>                         'fields' => '',
> >>>>>                         'order' => ''
> >>>>>                 ),
> >>>>>                 'Project' => array(
> >>>>>                         'className' => 'Project',
> >>>>>                         'foreignKey' => 'project_id',
> >>>>>                         'conditions' => '',
> >>>>>                         'fields' => '',
> >>>>>                         'order' => ''
> >>>>>                 )
> >>>>>         );
> >>>>>     class User extends AppModel {
> >>>>>     ...
> >>>>>     var $hasMany = array(
> >>>>>     ...
> >>>>>                 'UserRole' => array(
> >>>>>                         'className' => 'UserRole',
> >>>>>                         'foreignKey' => 'user_id',
> >>>>>                         'conditions' => '',
> >>>>>                         'fields' => '',
> >>>>>                         'order' => ''
> >>>>>                 ),
>
> >>>>>         );
> >>>>>     class Project extends AppModel {
> >>>>>     ...
> >>>>>     var $hasMany = array(
> >>>>>     ...
> >>>>>                 'UserRole' => array(
> >>>>>                         'className' => 'UserRole',
> >>>>>                         'foreignKey' => 'project_id',
> >>>>>                         'conditions' => '',
> >>>>>                         'fields' => '',
> >>>>>                         'order' => ''
> >>>>>                 ),
> >>>>>         );
> >>>>> When I try calling any method from UserRole from User, it give me the
> >>>>> 1064 SQL error. Any hint on where could be the problem?
>
> >>>>> Things I've tried so far: checked if UserRole is being loaded, and it
> >>>>> is. And I can call the UserRole functions from an element, they are
> >>>>> working fine.
>
> >>>>> FUNCTIONS (get_related_clients is in Users and the other is in
> >>>>> UserRoles):
>
> >>>>>     function get_related_clients ($id_user, $relationship_type) {
> >>>>>         $id_names = $this->User->UserRole->get_id_users($id_user,
> >>>>> $relationship_type);
> >>>>>         ...
> >>>>>     }
> >>>>>     function get_id_users ($id_agency = null,$type = null) {
> >>>>>                 $params_1 = array(
> >>>>>                         'conditions' => array('UserRole.user_id' => 
> >>>>> $id_agency)
> >>>>>                 );
> >>>>>                 $user_projects = $this->UserRole->find('all',$params_1);
> >>>>>                 $projects = array();
> >>>>>                 for ($i = 0; !empty($user_projects[$i]); $i++) {
> >>>>>                         $projects[] = 
> >>>>> $user_projects[$i]['UserRole']['project_id'];
> >>>>>                 }
> >>>>>                 $clients = array();
> >>>>>                 foreach ($projects as $project) { //pega o id de todos 
> >>>>> os usuarios
> >>>>> que sao clientes da lista de projetos anteriores
> >>>>>                         $params_2 = array(
> >>>>>                                 'conditions' => 
> >>>>> array('UserRole.project_id' => $project,
> >>>>> 'UserRole.role' => $type)
> >>>>>                         );
> >>>>>                         $client_project = 
> >>>>> $this->UserRole->find('first',$params_2);
> >>>>>                         if ($id_agency != 
> >>>>> $client_project['UserRole']['user_id'])
> >>>>> { $clients[] = $client_project['UserRole']['user_id']; } // voce nao
> >>>>> pode ser cliente de voce mesmo
> >>>>>                 }
> >>>>>                 return $clients;
> >>>>>         }
>
> >>>>> ERROR:
>
> >>>>>      Warning (512): SQL Error: 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 'get_id_users' at line 1
> >>>>>     DboSource::showQuery() - CORE/cake/libs/model/datasources/
> >>>>> dbo_source.php, line 684
> >>>>>     DboSource::execute() - CORE/cake/libs/model/datasources/
> >>>>> dbo_source.php, line 266
> >>>>>     DboSource::fetchAll() - CORE/cake/libs/model/datasources/
> >>>>> dbo_source.php, line 410
> >>>>>     DboSource::query() - CORE/cake/libs/model/datasources/
> >>>>> dbo_source.php, line 364
> >>>>>     Model::call__() - CORE/cake/libs/model/model.php, line 502
> >>>>>     Overloadable::__call() - CORE/cake/libs/overloadable_php5.php,
> >>>>> line 50
> >>>>>     UserRole::get_id_users() - [internal], line ??
> >>>>>     UsersController::get_related_clients() - APP/controllers/
> >>>>> users_controller.php, line 71
> >>>>>     Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 204
> >>>>>     Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 171
> >>>>>     Object::requestAction() - CORE/cake/libs/object.php, line 95
> >>>>>     include - APP/views/elements/client_list.ctp, line 2
> >>>>>     View::_render() - CORE/cake/libs/view/view.php, line 731
> >>>>>     View::element() - CORE/cake/libs/view/view.php, line 392
> >>>>>     include - APP/views/projects/index.ctp, line 45
> >>>>>     View::_render() - CORE/cake/libs/view/view.php, line 731
>
> > --
> > Our newest site for the community: CakePHP Video 
> > Tutorialshttp://tv.cakephp.org
> > Check out the new CakePHP Questions sitehttp://ask.cakephp.organd help 
> > others with their CakePHP related questions.
>
> > To unsubscribe from this group, send email to
> > [email protected] For more options, visit this group 
> > athttp://groups.google.com/group/cake-php

-- 
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
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to