Как получить доступ к...
-
- Сообщения: 7
- Зарегистрирован: 2014.10.22, 18:52
Как получить доступ к...
Привет умные люди! С помощью joinWith сджойнил две таблицы, но не понимаю как получить доступ к тому, что находится в *yii\db\BaseActiveRecord*_related. Посмотрите, пожалуйста, скриншот и подскажите как получить доступ к свойствам [expansion].
Я знаю только как получить доступ к свойствам $servers. Вот так: $servers[0]->id... Пробовал такой вариант $server[0]['expansion']->id но это не работает. Это вообще возможно?
Я знаю только как получить доступ к свойствам $servers. Вот так: $servers[0]->id... Пробовал такой вариант $server[0]['expansion']->id но это не работает. Это вообще возможно?
Re: Как получить доступ к...
$servers[0]->expansion->id
-
- Сообщения: 7
- Зарегистрирован: 2014.10.22, 18:52
Re: Как получить доступ к...
codrilla спасибо за ответ. я попробовал. ошибок не выдает, но просто ничего не выводится на экран.
-
- Сообщения: 7
- Зарегистрирован: 2014.10.22, 18:52
Re: Как получить доступ к...
Или если я не в ту сторону копаю, как мне выводить то что я приджойнил?
Re: Как получить доступ к...
может очепятка? у тебя сначала $servers... а потом $server...
-
- Сообщения: 7
- Зарегистрирован: 2014.10.22, 18:52
Re: Как получить доступ к...
Да. это опечатка. Но в коде ее точно нет. Вопрос актуален. Как то же можно вывести вместо idшника то что требуется с помощью сджойнивания таблиц.
Re: Как получить доступ к...
Погоди, а у тебя relation указан в модели Servers?
-
- Сообщения: 7
- Зарегистрирован: 2014.10.22, 18:52
Re: Как получить доступ к...
Да. Вот:
public function getExpansion()
{
return $this->hasOne(Expansion::className(), ['id' => 'expansion']);
}
public function getExpansion()
{
return $this->hasOne(Expansion::className(), ['id' => 'expansion']);
}
Re: Как получить доступ к...
Я так понимаю ['id' => 'expansion'] в поле expansion хранится id экспаншена? Релейшены генерил через gii?
Если relation есть, то joinWith впринципе писать не обязательно, можно просто echo \app\models\Server::findOne(10)->expansion->name;
Yii2 последней версии?
В логах ошибки есть?
И приведи тогда весь код запроса с джойнами своими.
Если relation есть, то joinWith впринципе писать не обязательно, можно просто echo \app\models\Server::findOne(10)->expansion->name;
Yii2 последней версии?
В логах ошибки есть?
И приведи тогда весь код запроса с джойнами своими.
-
- Сообщения: 7
- Зарегистрирован: 2014.10.22, 18:52
Re: Как получить доступ к...
релейшены не через gii, а копипаст с документации.
echo \app\models\Server::findOne(10)->expansion->name; тоже возвращает null. несмотря на то, что в дебаггере видно что свойства есть, что видно на скриншоте.
yii2 последняя
в логах ошибок нет.
Делаю так в контроллере:
$servers = Server::find()->joinWith('expansion')->all();
Запрос такой получается: SELECT `server`.* FROM `server` LEFT JOIN `expansion` ON `server`.`expansion` = `expansion`.`id`
Вопрос актуален. Очень хочется решить данную загвоздку!
echo \app\models\Server::findOne(10)->expansion->name; тоже возвращает null. несмотря на то, что в дебаггере видно что свойства есть, что видно на скриншоте.
yii2 последняя
в логах ошибок нет.
Делаю так в контроллере:
$servers = Server::find()->joinWith('expansion')->all();
Запрос такой получается: SELECT `server`.* FROM `server` LEFT JOIN `expansion` ON `server`.`expansion` = `expansion`.`id`
Вопрос актуален. Очень хочется решить данную загвоздку!
Re: Как получить доступ к...
У тебя либо кривой релейшен либо кривая структура бд. Генерь через gii.
-
- Сообщения: 7
- Зарегистрирован: 2014.10.22, 18:52
Re: Как получить доступ к...
Дело было в конфликте имен. Попробовал gii. Он вместо getExpansion() сгенерил getExpansion0(). С нулем все заработало как надо. В итоге я просто переименовал поле expansion в таблице server на expansion_id.
Спасибо всем пытающимся помочь. Вопрос снят.
Спасибо всем пытающимся помочь. Вопрос снят.