Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho dois códigos que fazem a mesma coisa, mas de maneira diferente, um calcula de uma vez e coloca na array, outro, eu calculo um valor de cada vez.
O que calcula de uma vez:
<?php
public static function get_count_companies_by_tax_regime_by_financial_movement($tax_regime)
{
$sql = 'SELECT cod,internal_control_group,company_tax_regime FROM data_companies WHERE company_tax_regime = "' . $tax_regime . '"';
$rs = MySQLComponents::get_rs_array_stmt_PDO($sql);
$companies_cod = array_column($rs, 'cod');
$SQL_companies_cod = implode("','", $companies_cod);
$count = count($emps);
$exercise = date('Y-m') . '-01';
$sql_2 = 'SELECT * FROM fiscal_obligations_control WHERE relationship IN("' . $SQL_companies_cod . '") AND exercise = "' . $exercise . '"';
$rs_2 = MySQLComponents::get_rs_array_stmt_PDO($sql_2);
$CM = 0;
$SM = 0;
$outstanding= 0;
foreach ($rs_2 as $row) {
$apuracao = $row['status_apuracao'];
if($apuracao == 0){
$outstanding = $outstanding +1;
}elseif($apuracao == 1){
$SM = $SM + 1;
}elseif($apuracao == 3 OR $apuracao == 4){
$CM = $CM + 1;
}else{
return 0;
break;
}
}
$response = [];
$response['CM'] = $CM;
$response['SM'] = $SM;
$response['outstanding'] = $outstanding;
return $response;
}
E fiz esse outro que calcula 1 valor de cada vez:
<?php
public static function get_count_companies_by_tax_regime_by_financial_movement($tax_regime, $financial_movement)
{
$sql = 'SELECT cod,internal_control_group,company_tax_regime FROM data_companies WHERE company_tax_regime = "' . $tax_regime . '"';
$rs = MySQLComponents::get_rs_array_stmt_PDO($sql);
$companies_cod = array_column($rs, 'cod');
$SQL_companies_cod = implode("','", $companies_cod);
$count = count($emps);
$exercise = date('Y-m') . '-01';
$sql_2 = 'SELECT * FROM fiscal_obligations_control WHERE relationship IN("' . $SQL_companies_cod . '") AND exercise = "' . $exercise . '"';
$rs_2 = MySQLComponents::get_rs_array_stmt_PDO($sql_2);
$value = 0;
foreach ($rs_2 as $row) {
$apuracao = $row['status_apuracao'];
if ($apuracao == $financial_movement) {
$value = $value + 1;
} elseif ($apuracao == 1 OR $apuracao == 3 OR $apuracao == 4) {
// Não soma
} else {
return 0;
break;
}
}
return $value;
}
A primeira, eu chamaria uma vez, e espalharia os dados da array, mas ela é muito especifica.
A segunda precisa ser chamada toda vez que precisa de um dado, porém ele é mais 'abstrata'.
As duas são chamadas da mesma forma com uma requisição ajax quando o elemento com o data-attr "get_count_companies", com "primary-param", com "secondary-param", e param-numbs, e também com o className 'get_data_from_db' é carregado, depois ele passa para o Controller, que identifica e chama essa função dentro do model, essa parte é ok, a dúvida é sobre o método, pois tenho vários métodos parecidos.
A dúvida é:
>
Citar
Entre esses dois métodos qual é o mais eficiente ?
Carregando comentários...