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 回答