2016-07-04 3 views
0

어떻게 fuelPHP에서 ORM을 사용하여이 쿼리를 실행할 수 있습니다FuelPHP 여러 ORM AND, OR 쿼리

$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 
       ));) 
: 나는 and (c=1 or d=2 or e=3)

그냥 붙어이 부분을 구현하는 방법을 잘 모릅니다

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

이것을 수행 할 방법이 있습니까? 고급

답변

0

에서

감사 당신은 다음과 같이 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(); 
0

을 당신은 또한 수 이 방법으로 사용하거나 더 많은 빛을 보도록이 링크를 살펴보십시오.
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(); 
0

당신은 체인을 할 수있는, 그래서 이것은 더 읽을 수 :

$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