Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
Cenário: Tenho uma classe NotaFiscal que tem um relacionamento com vários outros objetos, como Cliente, Fornecedor, Produtos e etc, sendo que estes objetos ligados diretamente ainda tem seus relacionamentos com outros objetos.
Objetivo: Apresentar uma lista de notas fiscais quem contém poucos dados, como número da nota, nome do cliente e valor total.
Dúvida: Recuperar o objeto NotaFiscal e todas as suas relações em um banco de dados, por exemplo, não seria um grande problema de desempenho, visto que preciso de poucos dados? Me parece um erro obter apenas as notas sem suas relações e um exagero obter tudo.
Olá @jamesbond!
Obrigado por responder minha pergunta, vou usar o código como exemplo para mostrar o que pretendo fazer:
<?php
$lista_de_notas = [
# nf_id, cliente_id
[123, 1],
[124, 2]
[125, 3]
[126, 1]
[127, 2]
# ...
];
foreach ($lista as $dados) {
$NotaFiscal = new NotaFiscal($dados[0], $dados[1]);
$NotaFiscal->escreverNota();
}
Com essa classe vou conseguir sem dúvidas atingir meu objetivo, mas o meu questionamento é quanto a performance disso, pois se o seu método "retornar" realmente fizer uma consulta ao banco a cada vez que for chamado, serão três consultas para cada Nota. Outro problema que não dá para mostrar com essa classe é que na minha ainda existe as classes de Fornecedor, Clientes e Produtos, todas relacionadas diretamente com nota. Assim:
<?php
class NotaFiscal
{
private $Cliente;
private $Fornecedor;
private $produtos;
# ...
public function __construct(Cliente $Cliente, Fornecedor $Fornecedor)
{
$this->Cliente = $Cliente;
$this->Fornecedor = $Fornecedor;
$this->produtos = [];
}
public function adicionarProduto(Produto $Produto): self
{
$this->produtos[] = $Produto;
return $this;
}
# ...
}
Existe várias outras propriedades e métodos, a minha principal dúvida é quanto a obtenção das classes Cliente, Fornecedores e Produtos que também tem vários dados, quando em determinado momento só vou imprimir o número da nota e seu valor.
Estou fazendo isso certo?>
5 horas atrás, Johnny Saymon disse:
Olá @jamesbond!
Obrigado por responder minha pergunta, vou usar o código como exemplo para mostrar o que pretendo fazer:
Com essa classe vou conseguir sem dúvidas atingir meu objetivo, mas o meu questionamento é quanto a performance disso, pois se o seu método "retornar" realmente fizer uma consulta ao banco a cada vez que for chamado, serão três consultas para cada Nota. Outro problema que não dá para mostrar com essa classe é que na minha ainda existe as classes de Fornecedor, Clientes e Produtos, todas relacionadas diretamente com nota. Assim:
Existe várias outras propriedades e métodos, a minha principal dúvida é quanto a obtenção das classes Cliente, Fornecedores e Produtos que também tem vários dados, quando em determinado momento só vou imprimir o número da nota e seu valor.
Estou fazendo isso certo?
Pesquise sobre Facade/Builder. Acho que ajuda em seu caso.
Quanto a consulta ao banco de dados, isso é relativo. Basta saber relacionar as tabelas.
Por exemplo aqui no fórum, cada mensagem corresponde a um usuário, na tabela tópicos existe a column ID USER ou seja com o ID do usuário na tabela tópico o mesmo faz uma consulta para receber o Nome do usuário.
Se um tópico tem 100 mensagens, olha quantas consultas foram executadas. Basta saber dividir as mesmas.
No seu caso, creio que não irá atrapalhar a performance.
Obrigado @jamesbond!
Vou pesquisar sobre o assunto.
Seja bem vindo ao fórum,
digamos que você tenha uma classe NotaFiscal / Comprador.
O que vamos fazer? Após o comprador efetuar uma compra, vamos gerar uma nota fiscal de acordo com a compra do cliente.
<?php
class NotaFiscal {
/ COMPRA FINALIZADA COM SUCESSO! ID DO PEDIDO É 2354 /
/ ID DO USUÁRIO É 23 /