| Ultima Edição: 17/Nov/25 |
Funções e coisas que eu uso normalmente porém nunca lembro qual tenho rixa com o PHP então nunca vou lembrar nada disso
try/catch padrão pra retornar erros corretamente
try {
}
catch(\Exception $e) {
throw new \Exception($e->getMessage(), 400, $e);
}
Executar procedure no arquivo Factory
public function executaProcedure($valor){
$procedure = new StoredProcedure($this->entityManager->getConnection(), 'NOME_DA_PROCEDURE');
$procedure->addParam(new Param('NOME_DO_CAMPO', Param::PARAM_INPUT , $cdempresa , Param::PARAM_TYPE_STR));
$procedure->addParam(new Param('NOME_DO_OUTRO_CAMPO_DE_SAIDA', Param::PARAM_OUTPUT));
$resultado = $procedure->execute();
return $resultado;
}
Lembrando é necessario colocar um argumento para váriaveis de saída também (Param::PARAM_OUTPUT) se houver
Executar query no arquivo factory
<?php
namespace Teknisa\FIS\Modules\Relatorios\Factories;
use Doctrine\ORM\EntityManager;
class PerfilClienteFactory
{
protected $connection;
public function __construct(EntityManager $entityManager){
$this->connection = $entityManager->getConnection();
}
public function runQuery($valor) {
$params = array(
"CAMPO" => $valor
);
$query = "SELECT * FROM TABLE WHERE CAMPO == :CAMPO";
$stmt = $this->connection->prepare($query);
$stmt->execute($params);
return $stmt->fetchAll();
}
}
Gerar relatório
TeknisaCrud
Me disseram que normalmente é mais conveniente/confiável usar query sql normalmente. Porém já tem varias que usam então para referência:
Uma class que herda/extende TeknisaCrud pode usar os métodos para operações REST:
GET:
Dá pra usar:
parent::find($request, $response);
E.G:
class Test extends TeknisaCrud {
public function findSaldoFiscal(DTO\Request\Filter $request, DTO\Response $response) {
$this->dataSourceName = "saldempr_contctbl";
$this->parameterBagColumns = array("P_CDCONTDESTINO", "P_CDEMPRESA", "P_DTSALDEMPR", "NRORG");
parent::find($request, $response);
}
}
Nesse exemplo, estamos fazendo um SELECT na tabela definida pelo dataSource, passada por meio do contexto local com o método dataSourceName:
//saldempr_contctbl é o nome do datasource
$this->dataSourceName = "saldempr_contctbl";
Como a query recebe váriaveis dinâmicas, usamos parameterBagColumns, passamos pra váriavel uma array dinâmica com todos valores ENVIADOS PELO FRONT-END, e ele vai botar na query.
// "P_CDCONTDESTINO", "P_CDEMPRESA", "P_DTSALDEMPR", "NRORG", são os valores dinâmicos definidos na query.
$this->parameterBagColumns = array("P_CDCONTDESTINO", "P_CDEMPRESA", "P_DTSALDEMPR", "NRORG");
Depois só chamar o método, e é por isso que espero que quem inventou OOP morra.
POST:
Dá pra usar:
parent::save($request, $response);
E.G:
public function saveParamimpostofilImpostoContctbl(DTO\Request $request, DTO\Response $response) {
$row = $request->getDataSet()->getRows()[0];
$row['__is_new'] = $this->parametrosService->paramimpostofilIsNew($row);
$this->dataSourceName = "paramimpostofil_imposto_contctbl";
$this->dataSourceNameToSave = "paramimpostofil";
parent::save($request, $response);
}
Nesse exemplo, estamos fazendo um DELETE na tabela definida pelo dataSource, passada por meio do contexto local com o método dataSourceName:
//implantsaldcome é o nome do datasource
$this->dataSourceName = "implantsaldcome";
Aqui até onde eu vi, não se passa a array com as variáveis, mas sim se usa a array de primaryKeys……….
Depois só chamar o método, e é por isso que espero que quem inventou OOP morra (2x).
DELETE:
Dá pra usar:
parent::delete($request, $response);
E.G:
class Test extends \Teknisa\CTB\Controllers\TeknisaCrud {
public function deleteSaldoComercial (DTO\Request $request, DTO\Response $response) {
$this->dataSourceName = "implantsaldcome";
parent::delete($request, $response);
}catch (\Exception $e) {
$response->setError(new Error($e->getMessage() , 500));
}
}
Nesse exemplo, estamos fazendo um DELETE na tabela definida pelo dataSource, passada por meio do contexto local com o método dataSourceName:
//implantsaldcome é o nome do datasource
$this->dataSourceName = "implantsaldcome";
Aqui até onde eu vi, não se passa a array com as variáveis, mas sim se usa a array de primaryKeys……….
Depois só chamar o método, e é por isso que espero que quem inventou OOP morra (3x).
Coisas de data
Pegar úlitmo dia do mês
Só usar o método date(), e usar como argumentos o formato ‘d/m/y’ e ‘last day of $ano-$mes-dia’. A data tem que estar formatada com hifen entre membros. ~O PHP é tão estúpido que chega a ser util…….~
$ultimo_dia = date('d/m/Y', strtotime("last day of $ano-$mes-$dia"));