Como usar ORM sem fazer um SELECT * no banco

14 views
Skip to first unread message

Diogo Machado

unread,
Feb 18, 2014, 8:12:28 AM2/18/14
to kohan...@googlegroups.com
Bom dia pessoal, é uma dúvida antiga. Eu reparei, que toda vez que uso ORM, ele faz um SELECT *, e as vezes eu só que uma informação da tabela. Alguém sabe como fazer isso?

Douglas J.A.M

unread,
Feb 18, 2014, 8:40:52 AM2/18/14
to kohan...@googlegroups.com
Que eu saiba so com DB::Select('consulta'), anão que voce extenda e personalize o ORM criando um metodo aí que receba por parametro o campo/campos, e este faça o DB::SELECT utilizando da tatica do _tablename.


Em 18 de fevereiro de 2014 10:12, Diogo Machado <di...@diogomachado.com> escreveu:
Bom dia pessoal, é uma dúvida antiga. Eu reparei, que toda vez que uso ORM, ele faz um SELECT *, e as vezes eu só que uma informação da tabela. Alguém sabe como fazer isso?

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para kohana-php+...@googlegroups.com.
Para postar neste grupo, envie um e-mail para kohan...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/kohana-php.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Rodrigo Monteiro Ferreira

unread,
Feb 18, 2014, 8:46:17 AM2/18/14
to kohan...@googlegroups.com
Isso mesmo que o Douglas falou! 

Mas lembando que vc esta trabalhando com OO e o ORM do framework eh para isso mesmo, buscar o objeto inteiro mesmo se for pegar um campo eh melhor buscar tudo... se nao fica com kra de gambiarra...
--
Rodrigo Monteiro
rodrigom...@gmail.com
(11) 96267-9366

Diogo Machado

unread,
Feb 18, 2014, 9:15:33 AM2/18/14
to kohan...@googlegroups.com
Valeu galera. Pensei que tinha como otimizar isso de forma simples. Vlw mesmo!

Diogo Machado

unread,
Feb 18, 2014, 9:16:00 AM2/18/14
to kohan...@googlegroups.com
Valeu galera. Pensei que tinha como otimizar isso de forma simples. Vlw mesmo!

Em terça-feira, 18 de fevereiro de 2014 10h46min17s UTC-3, Rodrigo Monteiro Ferreira escreveu:

felipe bastos

unread,
Feb 18, 2014, 11:23:05 AM2/18/14
to Kohana Php
seria isso??

$user = ORM::factory('user')->select('username')->find_all();

select u.username from user u

Renan Vaz

unread,
Feb 18, 2014, 10:59:19 PM2/18/14
to kohana-php
Isso, usa o ->select

Abs,
Renan Vaz
Cel: (11) 97148.6994
Skype: vazrenan
Twitter: @renanvaz
Facebook: http://www.facebook.com/renanvaz

Douglas J.A.M

unread,
Feb 19, 2014, 6:19:08 AM2/19/14
to kohan...@googlegroups.com
Vocês estão se enganando, a questão não é puxar apenas uma coluna na variável e sim otimizar a consulta gerando menor processando para o servidor, o comando ->select ainda sim puxa todos os campos isso por ser um ORM onde se busca o objeto inteiro conforme explicado por Rodrigo Monteiro, por isso recomendamos a utilização do select puro e nativo, vai que o cara tem mil colunas tipo binary, realmente é pesado.

ORM::Factory('Cliente')->select('nome')->find_all();
echo Database::instance()->last_query;

felipe bastos

unread,
Feb 19, 2014, 6:31:09 AM2/19/14
to kohan...@googlegroups.com

Em termos de otimizacao ...

Com join vc pode usar with()

Agora .. Pela teoria de banco de dados fazer um select * e mais otimizado do que buscar apenas um campo pois o banco tem de fazer uma busca linear em cada registro ...

Vc tem uma perda de desempenho da ordem N * R onde N e o numero de campos e R o numero de registros ... Entao, quanto maior for a quantidade de campos e maior o banco .. Mais desempenho do banco vc perde tentando buscar uma coluna.

O Orm esta correto ...

Reply all
Reply to author
Forward
0 new messages