В этом случае scopes бы удобное решение, особенно если вы собираетесь использовать сложные условия.
1. Начнем с создания модели, которая расширяет ActiveQuery
с помощью метода, который будет использоваться, чтобы добавить условия к запросу, например: active = 1
namespace app\models;
use yii\db\ActiveQuery;
class TextQuery extends ActiveQuery
{
public function active($state = 1)
{
$this->andWhere(['active' => $state]); // or any other condition
return $this;
}
}
2. Override find()
метод ваша Text
модель:
public static function find()
{
return new \app\models\TextQuery(get_called_class());
}
3. Добавить метод в Type
модели, которая извлекает ваши реляционные данные через новоиспеченный объем:
public function getActiveText()
{
return $this->hasMany(Text::className(), ['type_id' => 'id'])->active();
}
Наконец, использовать его следующий образ:
$text = $product->part->type->activeText;
Документы довольно ясно по этому вопросу, проверьте ' em вне.