using Yii2, I’m making the three Models of relationship: FinlegadoTitulo
,FinlegadoTituloParcela
and FinlegadoTituloParcelaCentroDeCusto
.
-
A title has N portions
-
A portion has 1 Cost Center
The Models of relationship is being done as follows:
FinlegadoTitulo
public function getFinlegadoTituloParcelas()
{
return $this->hasMany(FinlegadoTituloParcela::className(), ['finlegado_titulo_id' => 'id'])->orderBy('numero_parcela');
}
FinlegadoTituloParcela
public function getFinlegadoTituloParcelaCentroDeCusto()
{
return $this->hasOne(FinlegadoTituloParcelaCentroDeCusto::className(), ['id' => 'finlegado_titulo_parcela_centro_de_custo_id']);
}
public function getFinlegadoTitulo()
{
return $this->hasOne(FinlegadoTitulo::className(), ['id' => 'finlegado_titulo_id']);
}
FinlegadoTituloParcelaCentroDeCusto
public function getFinlegadoTituloParcelas()
{
return $this->hasMany(FinlegadoTituloParcela::className(), ['finlegado_titulo_parcela_centro_de_custo_id' => 'id']);
}
With this structure, I’m trying to search for a title where your parcels has the center of XXX ** ** cost, and the Model FinLegadoTituloSearch with the following method:
public function search($params)
{
$query = FinlegadoTitulo::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$dataProvider->setSort(['defaultOrder' => ['data_vencimento' => SORT_DESC]]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$query->joinWith('FinlegadoTituloParcelaCentroDeCusto');
$query->andFilterWhere([
'id' => $this->id,
'data_cadastro' => $this->data_cadastro,
'data_emissao' => $this->data_emissao,
'data_competencia' => $this->data_competencia,
'quantidade_parcelas' => $this->quantidade_parcelas,
'valor_original' => $this->valor_original,
'data_vencimento' => $this->data_vencimento,
'n_pagamento' => $this->n_pagamento,
'finlegado_titulo_tipo_doc_id' => $this->finlegado_titulo_tipo_doc_id,
'finlegado_cliente_id' => $this->finlegado_cliente_id,
]);
$query->andFilterWhere(['>', 'data_cadastro', $this->data_de]);
$query->andFilterWhere(['<', 'data_cadastro', $this->data_ate]);
$query->andFilterWhere(['like', 'documento', $this->documento])
->andFilterWhere(['like', 'tipo', $this->tipo])
->andFilterWhere(['like', 'status', $this->status])
->andFilterWhere(['like', 'historico', $this->historico])
->andFilterWhere(['like', 'alterado', $this->alterado]);
return $dataProvider;
}
And it does not return me the titles surveyed by cost center XXX