Hello.
I am trying to create a new website. Currently i am very pleased with working with yii. Still having some Foreign key issues.
My problem is this:
CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘players.playerid’ in ‘where clause’
The database is from a game im trying to setup.
a "Base" allways has an owner but not allways an occupier.
Any ideas on how to handle it in the relations when i relate to all the bases the player has?
Data structures and relations:
Players model:
return array(
"bases" => array(self::HAS_MANY,"Bases","playerid",
'condition'=> "players.playerid = bases.ownerid"
),
"occupied_bases" => array(self::HAS_MANY,"Bases","playerid"),
"fleets" => array(self::HAS_MANY,"Fleet","ownerid")
);
Bases model:
return array(
'planet' => array(self::BELONGS_TO,"Planets", "baseid"),
'owner' => array(self::BELONGS_TO, "Players","ownerid"),
'occupier' => array(self::HAS_ONE,"Players","occupierid"),
'commander' => array(self::HAS_ONE,"Commanders","commanderid"),
'structures' => array(self::HAS_MANY,"Structures","baseid")
);
Players SQL:
CREATE TABLE players
(
playerid
int(11) NOT NULL,
… (more unnessesary coloums)
UNIQUE KEY playerid
(playerid
)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Bases SQL:
CREATE TABLE bases
(
baseid
int(11) NOT NULL,
name
varchar(30) NOT NULL,
…
ownerid
int(11) DEFAULT ‘0’,
occupierid
int(11) DEFAULT ‘0’,
commanderid
int(11) DEFAULT ‘0’,
UNIQUE KEY baseid
(baseid
),
KEY ownerid
(ownerid
),
KEY occupierid
(occupierid
),
KEY commanderid
(commanderid
)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE bases
ADD CONSTRAINT bases_ibfk_14
FOREIGN KEY (commanderid
) REFERENCES commanders
(commanderid
),
ADD CONSTRAINT bases_ibfk_11
FOREIGN KEY (baseid
) REFERENCES planets
(baseid
),
ADD CONSTRAINT bases_ibfk_12
FOREIGN KEY (ownerid
) REFERENCES players
(playerid
),
ADD CONSTRAINT bases_ibfk_13
FOREIGN KEY (occupierid
) REFERENCES players
(playerid
);