【问题标题】:FuelPHP orm multiple AND,OR queryFuelPHP orm 多个 AND,OR 查询
【发布时间】:2016-07-04 03:46:40
【问题描述】:

如何在fuelPHP中使用orm执行这个查询?

SELECT * FROM user when a=1 and b=2 and (c=1 or d=2 or e=3) 

我不知道如何实现这个:and (c=1 or d=2 or e=3)

我被困在:

 $where = array()
 $where[] = array('a'=>1,'b'=>2);

 //Adding c,d,e column in $where[]
  I dont know how to combine AND and OR

     $query = Model_User::find('all', array(
                          'where' => $where
                  ));)

有没有办法做到这一点?

【问题讨论】:

    标签: fuelphp fuelphp-orm


    【解决方案1】:

    你可以像这样使用 where_or:

    $q = Model_User::find('all', array(
        'where' => array(
        array('a', 1),
            'and' => array(
                array('b', 2),
            ),
        ),
    ));
    

    或者确实像这样(我发现选择时更容易阅读:

    $q = Model_User::query();
    $q->where('a', '=', 1);
    $q->and_where('b', '=', 2);
    $q->or_where_open();
      $q->where('c', '=', 1);
      $q->or_where('d', '=', 2);
      $q->or_where('e', '=', 3);
    $q->or_where_close();
    

    【讨论】:

      【解决方案2】:

      您也可以通过这种方式使用它或查看此链接以获得更多信息
      Query builder Where - Classes FuelPHP documentation

      //this should be done within the model that you wish to deal with
      $query = DB::select("*");
      $query->from->("user");
      $query->where("a","=","1");
      $query->and_where("b","=","2");
      $query->where(function($query){
      $query->where("c","=","1");
      $query->or_where("d","=","2");
      $query->or_where("e","=","3");
      });
      $query->execute();
      

      【讨论】:

        【解决方案3】:

        你可以链接,所以这更具可读性:

        $q = Model_User::query()
             ->where('a', '=', 1)
             ->and_where('b', '=', 2)
             ->or_where_open()
                ->where('c', '=', 1)
                ->or_where('d', '=', 2)
                ->or_where('e', '=', 3)
           ->or_where_close();
        

        如果您想使用 DB 查询来提高性能,但仍需要 ORM 模型对象作为结果,您可以使用 as_object(),请参阅http://fuelphp.com/docs/packages/orm/crud.html#/custom_sql

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-10
          • 1970-01-01
          • 2015-03-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多