Как сделать select нужной колонки из связанной таблицы в AR Yii2?

Yii Framework предоставляет удобные возможности для работы с базами данных, а особенно с AR (Active Record) - это позволяет легко работать с таблицами в базе данных через создание моделей, представляющих данные в таблицах. При работе с AR в Yii2 возникает вопрос, как получить нужную колонку из связанной таблицы.

Для того чтобы получить нужную колонку из связанной таблицы в AR Yii2, можно использовать метод with и select или joinWith и select. Давайте рассмотрим оба варианта.

Метод with используется для загрузки связанных данных, а select - для выбора нужных колонок из этих данных. Для примера предположим, что у нас есть модель Product, у которой есть связь с моделью Category. И мы хотим выбрать только колонку title из связанной таблицы Category. Вот как это можно сделать:

use appmodelsProduct;

$product = Product::find()
    ->with('category')
    ->select('category.title')
    ->one();

Метод joinWith используется в случаях, когда нужно включить в запрос данные из связанных таблиц, а select - для выбора нужных колонок из этих данных. Вот как это можно сделать с использованием метода joinWith:

use appmodelsProduct;

$product = Product::find()
    ->joinWith('category')
    ->select('category.title')
    ->one();

Оба этих метода возвращают экземпляр класса yiidbActiveQuery, поэтому мы можем дальше манипулировать этими данными. Например, мы можем обратиться к нужной колонке, используя $product->category->title. Обратите внимание, что если у вас есть связь между моделями, то Yii2 автоматически создаст атрибуты для доступа к связанным данным.

В заключение, использование методов with, select, joinWith позволяет выбрать нужные колонки из связанных таблиц в AR Yii2. Это очень удобно и позволяет эффективно работать с данными в базе данных.