OR e AND no mesmo SQL com o frame... Bom dia galera, como faço para fazer um sql assim: select* from disciplina where (id = 15 or name ilike(%matet%)) and (empresa_id = 1)?... Meu código esta assim: ...
WS
OR e AND no mesmo SQL com o frame...  
Bom dia galera, como faço para fazer um sql assim: select* from disciplina where (id = 15 or name ilike(%matet%)) and (empresa_id = 1)?...
Meu código esta assim:
 
  1. <?php
  2. public function onReload($param = NULL)
  3. {
  4. try
  5. {
  6. // open a transaction with database 'educacional'
  7. TTransaction::open('educacional');
  8. // creates a repository for CdnDisciplina
  9. $repository = new TRepository('CdnDisciplina');
  10. $limit = 100;
  11. // creates a criteria
  12. $criteria = new TCriteria;
  13. // default order
  14. if (empty($param['order']))
  15. {
  16. $param['order'] = 'id';
  17. $param['direction'] = 'asc';
  18. }
  19. $criteria->setProperties($param); // order, offset
  20. $criteria->setProperty('limit', $limit);
  21. if (TSession::getValue('CdnDisciplina_filter_id')) {
  22. $criteria->add(TSession::getValue('CdnDisciplina_filter_id', TExpression::OR_OPERATOR)); // add the session filter
  23. }
  24. if (TSession::getValue('CdnDisciplina_filter_nome')) {
  25. $criteria->add(TSession::getValue('CdnDisciplina_filter_nome'), TExpression::OR_OPERATOR); // add the session filter
  26. }
  27. // load the objects according to criteria
  28. $objects = $repository->load($criteria, FALSE);
  29. if (is_callable($this->transformCallback))
  30. {
  31. call_user_func($this->transformCallback, $objects, $param);
  32. }
  33. //var_dump($objects);
  34. $this->datagrid->clear();
  35. if ($objects)
  36. {
  37. // iterate the collection of active records
  38. foreach ($objects as $object)
  39. {
  40. // add the object inside the datagrid
  41. $this->datagrid->addItem($object);
  42. }
  43. }
  44. // reset the criteria for record count
  45. $criteria->resetProperties();
  46. $count= $repository->count($criteria);
  47. $this->pageNavigation->setCount($count); // count of records
  48. $this->pageNavigation->setProperties($param); // order, page
  49. $this->pageNavigation->setLimit($limit); // limit
  50. // close the transaction
  51. TTransaction::close();
  52. $this->loaded = true;
  53. }
  54. catch (Exception $e) // in case of exception
  55. {
  56. // shows the exception error message
  57. new TMessage('error', $e->getMessage());
  58. // undo all pending operations
  59. TTransaction::rollback();
  60. }
  61. }
  62. ?>


desde de já agradeço...

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (2)


WS

Galera consegui achar um exemplo que fala sobre isso, porém, ele esta remontando o criterio do SQL quando eu uso o onreload ele fica assim: ((empresa_id = 1) AND)((empresa_id = 1) AND)

segue o código:
 
  1. <?php
  2. try
  3. {
  4. // open a transaction with database 'educacional'
  5. TTransaction::open('educacional');
  6. // creates a repository for CdnDisciplina
  7. $repository = new TRepository('CdnDisciplina');
  8. $limit = 100;
  9. // composed criteria
  10. //creates criteria 1 for sql
  11. $criteria1 = new TCriteria;
  12. if (TSession::getValue('CdnDisciplina_filter_id')) {
  13. $criteria1->add(TSession::getValue('CdnDisciplina_filter_id', TExpression::OR_OPERATOR)); // add the session filter
  14. }
  15. if (TSession::getValue('CdnDisciplina_filter_nome')) {
  16. $criteria1->add(TSession::getValue('CdnDisciplina_filter_nome'), TExpression::OR_OPERATOR); // add the session filter
  17. }
  18. //creates criteria 2 for sql
  19. $criteria2 = new TCriteria;
  20. $criteria2->add(new TFilter('empresa_id', '=', TSession::getValue('empresa_id')));
  21. // creates a criteria
  22. $criteria = new TCriteria;
  23. // adding compsed criteria
  24. $criteria->add($criteria2);
  25. if (TSession::getValue('CdnDisciplina_filter')){
  26. $criteria->add($criteria1);
  27. }
  28. // default order
  29. if (empty($param['order']))
  30. {
  31. $param['order'] = 'id';
  32. $param['direction'] = 'asc';
  33. }
  34. $criteria->setProperties($param); // order, offset
  35. $criteria->setProperty('limit', $limit);
  36. echo $criteria->dump();
  37. }
  38. catch (Exception $e) // in case of exception
  39. {
  40. // shows the exception error message
  41. new TMessage('error', $e->getMessage());
  42. // undo all pending operations
  43. TTransaction::rollback();
  44. }
  45. ?>
WS

Como faço para limpar os critérios?...