Hi there, (my first post)
I have a problem accessing data from related table with ActiveRecords using the with() statement when there are two tables in between.
Here is my little db model: (Can’t post image 'cos i’m a newby)
[sql]
– Table mydb.location
CREATE TABLE IF NOT EXISTS mydb.location (
idlocation INT NOT NULL ,
address VARCHAR(45) NULL ,
PRIMARY KEY (idlocation) )
ENGINE = InnoDB;
– Table mydb.phonenumber
CREATE TABLE IF NOT EXISTS mydb.phonenumber (
idphonenumbers INT NOT NULL ,
locationid INT NULL ,
number VARCHAR(45) NULL ,
PRIMARY KEY (idphonenumbers) ,
INDEX locationid (locationid ASC) ,
INDEX fk_locationid (locationid ASC) ,
CONSTRAINT fk_locationid
FOREIGN KEY (`locationid` )
REFERENCES `mydb`.`location` (`idlocation` )
ENGINE = InnoDB;
– Table mydb.mental
CREATE TABLE IF NOT EXISTS mydb.mental (
idmental INT NOT NULL ,
item VARCHAR(45) NULL ,
price FLOAT NULL ,
PRIMARY KEY (idmental) )
ENGINE = InnoDB;
– Table mydb.mental_location
CREATE TABLE IF NOT EXISTS mydb.mental_location (
idmental INT NOT NULL ,
idlocation INT NOT NULL ,
PRIMARY KEY (idmental, idlocation) ,
INDEX fk_location (idlocation ASC) ,
INDEX fk_mental (idmental ASC) ,
CONSTRAINT fk_location
FOREIGN KEY (`idlocation` )
REFERENCES `mydb`.`location` (`idlocation` )
CONSTRAINT fk_mental
FOREIGN KEY (`idmental` )
REFERENCES `mydb`.`mental` (`idmental` )
ENGINE = InnoDB;
[/sql]
Scenario
Trying to get data from table phonenumber from Controller Mental.
Model mental()
public function relations(){
return array(
'locations' => array(self::MANY_MANY, 'Location', 'mental_location(idmental, idlocation)'),
// howto define the relations for phone number ? tried:
'locations.phonenumbers' => array(self::HAS_MANY, 'Phonenumber',
array('idlocation'=>'locationid'), 'through'=>'locations'),
);
}
Controller Rental
public function actionUpdate(){
$model = Rental::model()->with('locations', 'locations.phonennumbers')->findByPk($id);
// how to access phone number? tried
// how to access the model after the dot? like phonenumbers?
$mod_phonenumbers = $model->locations->phonenumbers; // but didn't work
}
Spent two days on this already. Hints welcome.
Fu
Yii1.1/MAMP