http://cakebaker.42dh.com/2008/05/18/new-core-behavior-containable/

On Dec 7, 8:27 am, gearvOsh <[EMAIL PROTECTED]> wrote:
> So I have this method within the model. The same array is returned
> from above  but I get a mysql error for the contain.
>
> 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 'contain' at line 1 [CORE\cake\libs\model
> \datasources\dbo_source.php, line 521]
>
> function test() {
>                 $this->actsAs = array('Container');
>
>                 $this->bindModel(array(
>                         'hasMany' => array(
>                                 'TeamMember' => array(
>                                         'className'             => 
> 'TeamMember',
>                                         'foreignKey'    => 'team_id',
>                                         'conditions'    => 
> array('TeamMember.status' => 'approved'),
>                                         'order'                 => 
> 'TeamMember.joinDate ASC',
>                                         'dependent'             => true,
>                                         //'finderQuery' => 'SELECT 
> User.username, User.handle,
> User.avatar FROM user AS User, teamMember as TeamMember WHERE User.id
> = TeamMember.user_id LIMIT 1'
>                                 ),
>                                 'TeamGame' => array(
>                                         'className'             => 'TeamGame',
>                                         'foreignKey'    => 'team_id'
>                                 )
>                         )
>                 ));
>
>                 $this->contain(array('TeamMember' => array('User'), 
> 'TeamGame'));
>
>                 return $this->find('first');
>         }
>
> On Dec 6, 3:35 am, Adam Royle <[EMAIL PROTECTED]> wrote:
>
> > Add:
>
> > var $actsAs = array('Containable');
>
> > to your Team model.
>
> > Then add this before your find() call:
>
> > $this->Team->contain('TeamMember' => array('User'), 'TeamGame');
>
> > Cheers,
> > Adam
>
> > On Dec 6, 12:51 pm, gearvOsh <[EMAIL PROTECTED]> wrote:
>
> > > Ok thats weird, I dont have foreign keys really setup but it still
> > > works. Im using $hasMany for members and games. But within the
> > > TeamMember and TeamGame arrays, is there way to get more information
> > > returned? I would need the members name, avatar, etc.
>
> > > Array
> > > (
> > >     [0] => Array
> > >         (
> > >             [Team] => Array
> > >                 (
> > >                     [id] => 1
> > >                     [status] => approved
> > >                     [name] => chair
> > >                     [tag] => _h_
> > >                     [urlName] =>
> > >                     [website] =>
> > >                     [irc] =>
> > >                     [about] =>
> > >                     [servers] =>
> > >                     [logo] =>
> > >                     [createDate] => 0
> > >                     [state_id] => 0
> > >                     [country_id] => 0
> > >                     [created] =>
> > >                     [modified] =>
> > >                 )
>
> > >             [TeamMember] => Array
> > >                 (
> > >                     [0] => Array
> > >                         (
> > >                             [id] => 4
> > >                             [team_id] => 1
> > >                             [user_id] => 32
> > >                             [role] => captain
> > >                             [status] => approved
> > >                             [joinDate] => 1211498560
> > >                         )
> > >                 )
>
> > >             [TeamGame] => Array
> > >                 (
> > >                     [0] => Array
> > >                         (
> > >                             [team_id] => 1
> > >                             [gameSystem_id] => 3
> > >                         )
> > >                 )
> > >         )
> > > )
>
> > > On Dec 5, 4:08 pm, gearvOsh <[EMAIL PROTECTED]> wrote:
>
> > > > Because I cant use foreign keys so all of those features are useless
> > > > to me. I also cant use linked models.
>
> > > > On Dec 5, 1:12 pm, teknoid <[EMAIL PROTECTED]> wrote:
>
> > > > > > I am not a big fan of the model system because its very limiting if 
> > > > > > you have advanced queries.
>
> > > > > How did you come to that conclusion?
>
> > > > > ...
>
> > > > > If you properly created your models and associations, a simple find
> > > > > ('all') will give you: Team, Roster, Game and League models with all
> > > > > the relevant info.
>
> > > > > On Dec 4, 6:23 pm, gearvOsh <[EMAIL PROTECTED]> wrote:
>
> > > > > > Ok in my current system (its a gaming league) I have packages. I 
> > > > > > will
> > > > > > use a Team package as an example. In this Team package I have a 
> > > > > > method
> > > > > > getTeamInfo() which calls out to external queries. I do this so I 
> > > > > > only
> > > > > > have to write a query once and can access its results through a 
> > > > > > method
> > > > > > call. I prefer this way instead of having to write the same query 
> > > > > > over
> > > > > > and over for different instances.
>
> > > > > > require('teamExt.php');
> > > > > > require('userExt.php');
>
> > > > > > class Team {
>
> > > > > >         public static function getTeamInfo($team_id) {
> > > > > >                 $team = TeamExt::getTeamInfo($team_id);
>
> > > > > >                 if (!empty($team)) {
> > > > > >                         $team['roster'] = 
> > > > > > TeamExt::getRoster($team_id);
> > > > > >                         $team['games']  = 
> > > > > > TeamExt::getGamesPlayed($team_id);
> > > > > >                         $team['stats']  = 
> > > > > > TeamExt::getStats($team_id);
> > > > > >                         $team['leader'] = 
> > > > > > UserExt::getUser($team['leader_id']);
> > > > > >                 }
>
> > > > > >                 return $team;
> > > > > >         }
>
> > > > > > }
>
> > > > > > Now when I call Team::getTeamInfo I should have its team info, 
> > > > > > roster,
> > > > > > games played, the team leader and league statistics. Now the problem
> > > > > > with CakePHP is its model system. I am not a big fan of the model
> > > > > > system because its very limiting if you have advanced queries. I was
> > > > > > thinking of doing it this way:
>
> > > > > > Class Team = Model Team
> > > > > > TeamExt = Team Behavior
> > > > > > UserExt = User Behavior
>
> > > > > > $team = $this->Team->getTeamInfo();
>
> > > > > > But how would I do custom queries in a behavior? And the logic for
> > > > > > behavior is wrong with my idea anyways. Anyone have an idea of how I
> > > > > > can accomplish my setup in CakePHP, because this is the one thing
> > > > > > stopping me from using CakePHP. And no I will not use joins.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to