6

Zend db select を使用して、以下のようなクエリを作成するように誰かに案内してもらえますか?

SELECT `tbl_md_users`.* 
FROM `tbl_md_users` 
WHERE 
      user_type <> 'TYPE1')
AND (first_name LIKE '%tom%' OR last_name LIKE '%tom%' OR user_name LIKE '%tom%') 
4

4 に答える 4

6

あなたが望むなら

SELECT `tbl_md_users`.* 
FROM `tbl_md_users` 
WHERE 
  user_type <> 'TYPE1')
AND (first_name LIKE '%tom%' OR first_name LIKE '%dick%' OR first_name LIKE '%harry%')

最初の答えはうまくいきません

代わりに Zend_Db_Expr を使用しました

$likeTom = new Zend_Db_Expr("first_name LIKE '%tom%'");
$likeDick = new Zend_Db_Expr("first_name LIKE '%dick%'");
$likeHarry = new Zend_Db_Expr("first_name LIKE '%harry%'");

$query = $database->select ()
    ->from ('tbl_md_users')
    ->where ('user_type <> ?', 'TYPE1')
    ->where ("{$likeTom} OR {$likeDick} OR {$likeHarry}");
于 2014-07-16T13:53:06.330 に答える
5
    $query = $database->select ()
        ->from ('tbl_md_users')
        ->where ('user_type <> ?', 'TYPE1')
        ->where ("first_name LIKE '%?%' OR last_name LIKE '%?%' OR user_name LIKE '%?%'", 'tom');
于 2012-12-17T08:26:06.553 に答える
1

現在の最新の解決策は、where 句で Nest() と unnest() を呼び出すことです。

$select->where
    ->nest()
        ->equalTo('column1', 1)
        ->or
        ->equalTo('column2', 2)
    ->unnest()
    ->and
    ->equalTo('column3', 3);
于 2016-05-28T07:14:54.707 に答える
0

これに Zend_Db_Select を使用する方法はないと思います。あなたが使用することができます

$this->table->getAdapter()->quoteInto()

カスタム クエリを作成するには。

于 2012-12-17T06:56:38.610 に答える