2012-10-24 11 views
13

Próbuję dowiedzieć się, jak utworzyć Mysql Wybierz z LUB w miejscu klauzuli. Domyślnie wszystkie klauzule, w których instrukcja jest ORAZ i po kilku godzinach próby i nieudane i przeglądanie sieci nie może sprawić, że zadziała. W ZF1 będzie to orWhere(), ale nie ma go w ZF2.ZF2 Jak orWhere()

Jest to kod mam wewnątrz AbstracttableGateway:

$resultSet = $this->select(function (Select $select) use ($searchstring) { 
      $select->join('users','blog_posts.id_user = users.id',array('name')) 
        ->join('blog_categories','blog_posts.id_category = blog_categories.id', array(
              'cat_name' => 'name', 
              'cat_alias' => 'alias', 
              'cat_image' => 'icon')) 
        ->order('date DESC'); 
        //->where("title LIKE '%" .$searchstring . "%' OR content LIKE '%". $searchstring ."%'") 
      $select->where->like('content','%'.$searchstring.'%'); 
      $select->where->like('title','%'.$searchstring.'%'); 
     } 
    ); 
    return $resultSet; 

linie z $select->where->like są te, które są ANDed i chcę je z OR. Co mam zmienić?

Odpowiedz

22

Nie ma orWhere w ZF2, ale można użyć dowolnej kombinacji obiektów Zend\Db\Sql\Predicate. Dla OR użyj 2 predykatów w PredicateSet z PredicateSet::COMBINED_BY_OR.

Nie ma zbyt wiele dokumentacji, ale można przeglądać źródła - na razie.

Edit: próbka

use Zend\Db\Sql\Predicate; 

$select->where(array(
    // ... 
    new Predicate\PredicateSet(
     array(
      new Predicate\Like('content', '%'.$searchstring.'%'), 
      new Predicate\Like('title', '%'.$searchstring.'%'), 
     ), 
     Predicate\PredicateSet::COMBINED_BY_OR 
    ), 
    // ... 
)); 
+0

dziękuje pozs, to działa zgodnie z oczekiwaniami –

4

albo chmura użytku:

$select->where 
    ->like('content','%'.$searchstring.'%') 
    ->or 
    ->like('title','%'.$searchstring.'%'); 
+0

to wygląda prościej ale rzuca tworzą mi Wskazówka + Błąd: niezdefiniowanej właściwości : Zend_Db_Table_Select :: $ where –

+0

Wygląda na to, że zostało to zastąpione? http://stackoverflow.com/a/34861412/184124 – HorusKol