学说 - 或者在哪里?

Spl*_*did 14 php doctrine

我有以下查询:

$query = Doctrine_Query::create()
                ->from('Member m')
                    ->where("m.type='1'")
                        ->andWhere("m.name LIKE '%$term%'")
                        ->orWhere("m.surname LIKE '%$term%'")
                        ->orWhere("m.company LIKE '%$term%'")
                        ->orderBy('id DESC');
Run Code Online (Sandbox Code Playgroud)

但它不像我想的那样工作 - 它忽略了type列.

我需要的是结果集m.type=1此查询中的其他字段和其他一些字段LIKE 'something'.

Tom*_*Tom 21

$query = Doctrine_Query::create()
  ->from('Member m')
  ->where('m.type = 1 AND m.name LIKE ?', '%'.$term.'%')
  ->orWhere('m.type = 1 AND m.surname LIKE ?', '%'.$term.'%')
  ->orWhere('m.type = 1 AND m.company LIKE ?', '%'.$term.'%')
  ->orderBy('m.id DESC');
Run Code Online (Sandbox Code Playgroud)

您的OR条件不包括第一个条件.还建议使用?for变量来确保Doctrine转义它们.


adl*_*son 20

汤姆的回答是正确的,尽管我喜欢将代码重复/重复保持在最低限度.

这种方式也应该有效,同时做一种更简洁,更清洁的方法

$query = Doctrine_Query::create()
       ->from('Member m')
       ->where('m.type = ?', 1)
       ->andWhere('m.name LIKE :term OR m.surname LIKE :term OR m.company LIKE :term', array(':term' => '%' . $term . '%'))
       ->orderBy('m.id DESC');
Run Code Online (Sandbox Code Playgroud)