Добрый день, я в Yii человек новый, помогите с реляционным запросом на Active Record. Документацию прочитал, но все равно не могу понять как сделать запрос для моего случая.
Итак имеется следующая структура базы данных(База на Postgres).
Таблица accounts.
Поле accountid(primary key).
Остальные поля не выжны.
Таблица address.(В ней храню email адреса, которые так же будут являтся логинами).
addressid(primary key)
accountid(foreign key связанный с таблицей accounts).
Остальные поля не выжны.
Таблица usersettings(Хранит настройки пользователей).
usersettingsid(primary key)
accountid(foreign key связанный с таблицей accounts)
addressid(foreign key связанный с таблицей address)
password(собственно поле которое мне надо получить).
Я создал все модели и crud.
Вот какие relationships мне сгенерировал yiic:
Таблица accounts:
return array(
'usersettings' => array(self::HAS_MANY, 'Usersettings', 'accountid'),
'addresses' => array(self::HAS_MANY, 'Address', 'accountid'),
);
Таблица addresses:
return array(
'usersettings' => array(self::HAS_MANY, 'Usersettings', 'addressid'),
'account' => array(self::BELONGS_TO, 'Accounts', 'accountid'),
);
Таблица usersettings:
return array(
'account' => array(self::BELONGS_TO, 'Accounts', 'accountid'),
'address' => array(self::BELONGS_TO, 'Address', 'addressid'),
);
Для класса авторизации мне необходимо передать классу наследующему CUserIdentity, emailaddr и password, чтобы пройти авторизацию.
Мне необходимо сделать запрос на Active Record, который возвращал бы эти два значения, то есть делал реляционный запрос к двум таблицам. И присваивал значение одной переменной.
Скажем если бы я не использовал Active record а просто SQL запрос, я бы делал так:
SELECT address.addressid,address.emailaddr,usersettings.password FROM address,usersettings WHERE emailaddr='test@test.ru';
Скажем если я решу делать так:
$record = address::model()->findBySql("SELECT address.addressid,address.emailaddr,usersettings.password FROM address,usersettings WHERE emailaddr='$this->username'");
Он выдаст ошибку что дескать usersettings он не знает.
Как можно слелать это используя к примеру данную конструкцию:
$record=address::model()->with(
'address.addressid',
'address.emailaddr',
'usersettings.password')->together()->findAll();
Или если уже не так то SQL запросом, только чтобы он не ругался что не знает usersettings.
Помогите разобраться, а то я уже в отчаяние впал