Yii2. Несколько innerJoinWith с переименованием одного столбца - PullRequest
0 голосов
/ 02 июля 2019

Попытка объединения таблиц отношений.Все отлично работает, кроме одного.В результате у меня есть два похожих названия столбцов.Но я понятия не имею, как переименовать один столбец из таблицы связанных магазинов внутри запроса.

$query = StoreItem::find()->innerJoinWith('stores', true)->innerJoinWith('users', true);

$dataProvider = new ActiveDataProvider([
            'query' => $query,
]);

Обратитесь за помощью.

Ответы [ 3 ]

0 голосов
/ 04 июля 2019

Вы можете создать особые отношения с магазином:

public function getStoresSpec()
{
  return $this->hasOne(Stores::tableName(), ['id' => 'store_id'])->select('column as another_column', ...);
}

Здесь вы устанавливаете псевдоним столбца в значение another_column. Не забудьте добавить все остальные поля, необходимые для этого отношения.

0 голосов
/ 05 июля 2019

Вы можете попробовать использовать псевдоним так:

$query = StoreItem::find()
    ->alias('si')
    ->innerJoinWith('stores', true)->innerJoinWith('users', true);

или определить псевдоним в своих моделях следующим образом:

public function getUserOrdersItems()
{
    return $this->hasMany(UserOrdersItems::className(), ['user_orders_id' => 'id'])->alias('orderItems');
}

это просто пример.Вы должны работать со своими 3 моделями.

0 голосов
/ 02 июля 2019

Вы можете установить псевдоним для таблиц и указать столбцы, которые вы хотите в запросе.Это было бы как:

$query = StoreItem::find()->select('us.desiredcolumn, st.desiredcolumn')->innerJoinWith('stores as st', true)->innerJoinWith('users as us', true);

Я не знаю, работает ли это, но это была идея ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...