Необходимо выбрать какое-либо поле из 2 таблиц, используя метод joinWith()
. У меня есть 2 стола: квартиры и город.joinWith return null значение внешнего ключа
Apartments таблица имеет поле CityId и город таблица имеет 2 поля: идентификатор и значение.
Что-то вроде этого:
Я хочу, чтобы выбрать несколько полей из квартир стола и через CityId поля получить имя (значения) из города.
отношения в квартире модели:
public function getCity() {
return $this->hasOne(City::className(), ['id' => 'cityId']);
}
Отношение в городе модели:
public function getApartments() {
return $this->hasMany(Apartments::className(), ['cityId' => 'id']);
}
В контроллере я построить запрос с использованием joinWith()
метода, но он не возвращающие city.value раздел.
$apartments = Apartments::find()->select('apartments.title, city.value')->joinWith('city')->all();
print_r($apartments)
возвращает это:
Array ([0] => app\models\Apartments Object ([file] => [_attributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 1) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 1) [_related:yii\db\BaseActiveRecord:private] => Array ([city] =>) [_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] => Array ()) [1] => app\models\Apartments Object ([file] => [_attributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 2) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 2) [_related:yii\db\BaseActiveRecord:private] => Array ([city] =>) [_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] => Array ()) [2] => app\models\Apartments Object ([file] => [_attributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 3) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 3) [_related:yii\db\BaseActiveRecord:private] => Array ([city] =>) [_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] => Array ()) [3] => app\models\Apartments Object ([file] => [_attributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 4) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 4) [_related:yii\db\BaseActiveRecord:private] => Array ([city] =>) [_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] => Array ()) [4] => app\models\Apartments Object ([file] => [_attributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 5) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 5) [_related:yii\db\BaseActiveRecord:private] => Array ([city] =>) [_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] => Array ()) [5] => app\models\Apartments Object ([file] => [_attributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 6) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ([title] => Квартира 6) [_related:yii\db\BaseActiveRecord:private] => Array ([city] =>) [_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array () [_behaviors:yii\base\Component:private] => Array ()))
Я не вижу city.value поле в этом ответе, но посмотреть город поле без какого-либо значения.
Вы можете мне помочь? Что проблема?
О, большое спасибо. – rmpstmp
рад помочь :) – Midhun