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
