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 <dcca...@gmail.com> 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 <kullmann.da...@gmail.com> 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 <dcca...@gmail.com> 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 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+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php