Вместо обычной ActiveQuery для класса можно определять свой класс запросов, в котором выносить в методы основные способы получения данных: namespace app\models; use yii\db\ActiveRecord; use yii\db\ActiveQuery; class Comment extends ActiveRecord { public static function find() { return new CommentQuery(get_called_class()); } } class CommentQuery extends ActiveQuery { public function active($state = true) { return $this->andWhere(['active' => $state]); } } Пример использования class Customer extends \yii\db\ActiveRecord { public function getActiveComments() { return $this->hasMany(Comment::className(), ['customer_id' => 'id'])->active(); } } $comments = Comment::find()->active()->all(); $inactiveComments = Comment::find()->active(false)->all(); $customers = Customer::find()->with('activeComments')->all(); // или по-другому: $customers = Customer::find()->with([ 'comments' => function($q) { $q->active(); } ])->all();
Yii Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor