• 查询语言.flow
    • 函数原型
    • 用法如下
    • elses 浅记忆

    查询语言.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 有区别,主要是受限于技术,其次是为保持简洁。