I am stumped with a problem when using model associations. For the
some reason the findAll generates an incorrect join query. Will great
appreciate any help. Both my models and controllers along with the
MySql output
is shown below.
class Playerstat extends AppModel
{
var $name = 'Playerstat';
var $belongsTo = array('Player' => array(
'className' => 'Player',
'foreignKey' =>
'player_id'));
}
class Player extends AppModel
{
var $name = 'Player';
var $hasOne = array('Playerstat' => array(
'className' =>
'Playerstat',
'foreignKey' =>
'player_id',
'dependent' => true));
}
Each Player record has a corresponding Playerstat record. player_id is
the primary key in
table players and player_id is the foreign key in playerstat.
I have the following code in one of my controller function
$status = PLAYER_ACTIVE;
$results = $this->Player->findAll("Player.active = $status AND
Player.level = 'A'",
array("Player.fname", "Player.lname",
"Playerstat.wins", "Playerstat.loss",
"Playerstat.points",
"Playerstat.last_played"),
'Playerstat.points DESC');
I get the following result from MySql
Query: SELECT `Player`.`fname`, `Player`.`lname`, `Playerstat`.`wins`,
`Playerstat`.`loss`, `Playerstat`.`points`, `Playerstat`.`last_played`
FROM `players` AS `Player` LEFT JOIN `playerstats` AS `Playerstat` ON
(`Playerstat`.`player_id` = `Player`.`id`) WHERE `Player`.`active` = 1
AND `Player`.`level` = 'A' ORDER BY `Playerstat`.`points` DESC
Warning (512): SQL Error: 1054: Unknown column 'Player.id' in 'on
clause' [CORE/cake/libs/model/datasources/dbo_source.php, line 440]
The players table does not have an "id" field it is suppose to be
player_id. What I am doing wrong? How can I make "id" into
"player_id".
Thanks,
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---