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