Query where complexa com DB::expr()

6 views
Skip to first unread message

felipe bastos

unread,
Apr 6, 2012, 3:38:35 PM4/6/12
to Kohana Php
Olá pessoas, boa páscoa para vocês ..

Estou tentando verificar se um período (data inicio e data fim) choca com outro período existente no banco ..

Vi aqui que existem 4 possibilidades,

choque pela esquerda (fim choca com periodo existente no banco),
centro (inicio e fim faz intercessão com periodo existente no banco),
direita (inicio choca com periodo existente no banco),
aglomerado (inicio anterior ao existente, e fim posterior ao existente) .. esqueçam essa parte .. :D

Seria isso aqui ...

where (expressoes) or (expressoes) or (expressoes) or (expressoes) ...

->where(DB::expr('('.$inicio.' <= inicio && '.$fim.' >= inicio && '.$fim.' <= fim)'), '', '')
->or_where(DB::expr('(inicio <= '.$inicio.' && fim >= '.$inicio.' && '.$fim.' <= fim)'), '', '')
->or_where(DB::expr('('.$inicio.' >= inicio && fim >= '.$inicio.' && '.$fim.' <= fim)'), '', '')
->or_where(DB::expr('('.$inicio.' <= inicio && '.$fim.' >= fim)'), '', '')

Minha preocupação é com os atributos do where que ficaram sem valor ($op, e $value)

where( mixed $column , string $op , mixed $value )


Existe uma forma melhor de fazer isso ?? :D

--
http://felipebastosweb.com.br
http://twitter.com/felipebastosweb

felipebastosweb

unread,
Apr 6, 2012, 4:02:44 PM4/6/12
to kohan...@googlegroups.com
Opa, deixem ..

falta corrigir, mas é necessário usar o operador e o valor ..

->where(DB::expr('(inicio >= '.$inicio.' && inicio <= '.$fim.' && fim >= '.$fim.')'), '=', TRUE)
Reply all
Reply to author
Forward
0 new messages