мне надо получить его имя из таблицы user и его аватар из таблицы profile
в search модели
Код: Выделить всё
public function search($params)
{
$query = Matches::find()->with(['userHome', 'userAway', 'profileHome', 'profileAway']);
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'created_at' => $this->created_at,
'status' => $this->status,
]);
return $dataProvider;
}
В модели Matches такие связи
Код: Выделить всё
public function getUserHome()
{
return $this->hasOne(User::className(), ['id' => 'user1']);
}
public function getUserAway()
{
return $this->hasOne(User::className(), ['id' => 'user2']);
}
public function getProfileHome()
{
return $this->hasOne(Profile::className(), ['user_id' => 'user1']);
}
public function getProfileAway()
{
return $this->hasOne(Profile::className(), ['user_id' => 'user2']);
}
в логе запросов вижу такое
это гудSELECT * FROM `user` WHERE `id` IN (4, 3, 8)
а профиль он дергает по каждому айди
Подскажите почему так?SELECT * FROM `profile` WHERE `user_id`=3
SELECT * FROM `profile` WHERE `user_id`=8
SELECT * FROM `profile` WHERE `user_id`=2