Yii 2.0 覆盖 ActiveQuery - 调用未知方法:yii\db\ActiveQuery::fechadas()

时间:2021-02-03 14:13:46

标签: yii2 overriding

我要覆盖 ActiveQuery 模型 AdmVeculosSolictacoes。 我创建了这个新方法 fechadas(),但是当我调用它时,出现错误“调用未知方法:yii\db\ActiveQuery::fechadas()”。

怎么了?

AdmVeculosSolicitacoesQuery.php

namespace app\models;

/**
 * This is the ActiveQuery class for [[AdmVeiculosSolicitacoes]].
 *
 * @see AdmVeiculosSolicitacoes
 */
class AdmVeiculosSolicitacoesQuery extends \yii\db\ActiveQuery
{
/*public function active()
{
    return $this->andWhere('[[status]]=1');
}*/

/**
 * {@inheritdoc}
 * @return AdmVeiculosSolicitacoes[]|array
 */
public function all($db = null)
{
    return parent::all($db);
}

/**
 * {@inheritdoc}
 * @return AdmVeiculosSolicitacoes|array|null
 */
public function one($db = null)
{
    return parent::one($db);
}

public function fechadas()
{
    return $this->andWhere(['or',['aprovado' => 0], ['devolvido' => 1]]);
}    
}

AdmVeculosSolicitacoes.php

public function getKmInicial()
    {
        $kmFinal_ultimaFechada = AdmVeiculosSolicitacoes::find('km_final')
                                                         ->where(['id_veiculo' => $this->id_veiculo])
                                                         ->fechadas() 
                                                         ->orderBy(['devolucao_confirmada_em' => SORT_DESC])
                                                         ->one();

        if ($kmFinal_ultimaFechada === null) {
            $veiculo = AdmVeiculos::findOne($this->id_veiculo);
            return $veiculo !== null ? $veiculo->km_atual : null;
        }
        else return $kmFinal_ultimaFechada['km_final'];
    }

1 个答案:

答案 0 :(得分:1)

您是否更新了 AdmVeiculosSolicitacoes 类以使用新的 Query

https://www.yiiframework.com/doc/guide/2.0/en/db-active-record#customizing-query-classes

class AdmVeiculosSolicitacoes extends ActiveRecord
{
    public static function find()
    {
        return new AdmVeiculosSolicitacoesQuery(get_called_class());
    }
}