查询语言.flow

函数原型

QueryPHP 数据构造器支持条件运算符,可以根据不同条件做不同的事情,支持所有的构造器函数,即返回 $this

  1. public function ifs($value = false);
  2. public function elseIfs($value = false);
  3. public function elses();
  4. public function endIfs();

用法如下

  1. /*
  2. Array
  3. (
  4. [0] => SELECT `test`.* FROM `test` WHERE `test`.`id` = 2 ORDER BY `test`.`name` DESC LIMIT 1
  5. [1] => Array
  6. (
  7. )
  8. [2] =>
  9. [3] => 5
  10. [4] =>
  11. [5] => Array
  12. (
  13. )
  14. )
  15. */
  16. $id = 2;
  17. Db::table('test')->
  18. ifs($id == 1)->where('id', 1)->
  19. elseIfs($id == 2)->where('id', 2)->orderBy('name DESC')->
  20. elseIfs($id == 3)->where('id', 3)->where('id', 1111)->
  21. elseIfs($id == 4)->where('id', 4)->
  22. endIfs()->
  23. getOne(true)

elses 浅记忆

elses 仅仅能记忆上一次 ifs,elseIfs 的结果,上一次的反向结果就是 elses 的条件值,我们建议不要在 SQL 链式中使用过度的条件判断。

  1. /*
  2. array (
  3. 0 => 'SELECT `test`.* FROM `test` WHERE `test`.`id` = 2 AND `test`.`id` = 4 ORDER BY `test`.`name` DESC LIMIT 1',
  4. 1 =>
  5. array (
  6. ),
  7. 2 => false,
  8. 3 => NULL,
  9. 4 => NULL,
  10. 5 =>
  11. array (
  12. ),
  13. )
  14. */
  15. $id = 2;
  16. Db::table('test')->
  17. ifs($id == 1)->where('id', 1)->
  18. elseIfs($id == 2)->where('id', 2)->orderBy('name DESC')->
  19. elseIfs($id == 3)->where('id', 3)->where('id', 1111)->
  20. // elses 仅仅能记忆上一次 ifs,elseIfs 的结果,上一次的反向结果就是 elses 的条件值
  21. // 其等价于 elseIfs($id != 3)
  22. elses()->where('id', 4)->
  23. endIfs()->
  24. getOne()

这里跟常用的 if elseif else 有区别,主要是受限于技术,其次是为保持简洁。