У меня есть такая модель:
/**
* @property int $id
* @property int $article_id
* @property int $amount
* @property int $created_at
* @property int $updated_at
*
* @property-read Article $article
* @property-read PaymentFile[] $files
* @property-read bool $isCompleted
*/
class ArticlePayment extends ActiveRecord {
public static function tableName() {
return '{{%article_payment}}';
}
public function getArticle() {
return $this->hasOne(Article::class, ['id' => 'article_id']);
}
public function getFiles() {
return $this->hasMany(PaymentFile::class, ['payment_id' => 'id'])->where(['is_deleted' => false]);
}
public function getIsCompleted() {
return $this->getFiles()->select('count(id) > 0')->groupBy('id')->having('count(id) > 0')->asArray();
}
}
Я хочу добавить свойство isCompleted, но не знаю как это правильно сделать... Сейчас свойство isCompleted возвращает массив массивов с одним элементом вида ['count(id) > 0' => '1'], вместо bool как мне надо. К тому же мне надо чтобы я мог использовать это свойство в where запросах. Например:
$article->getPayments()->where(['isCompleted' => true]);
Но ОРМ не преобразует это свойство в подзапрос в данном случае. Пытается просто найти столбец с таким именем, а его нет.