与OR的查询中的多个相似

时间:2016-01-04 11:24:27

标签: php cakephp cakephp-3.x

我需要在这个cakephp 3中添加另一个“like”,查询还必须在last_name字段中进行检查。我该怎么做,我想尊重CakePHP 3规则。感谢。

FUNCTION get_all_payroll_transactions return clob IS
  lXml xmltype;
BEGIN 
  SELECT XMLElement( "transaction",
                XMLElement("salary_year", SALYR),
                XMLElement("salary_month", SALMT),
                XMLElement("employee_id", EMPID),
                XMLElement("department_code", DPTID),
                XMLElement("salary_head", SALHD),
                XMLElement("description", DESCRP),
                XMLElement("amount", ALAMT),
                XMLElement("operator_id", OPID),
                XMLElement("transaction_date", TRADT)
 ) into lXml FROM PAYROLLFILE; 

RETURN '<result><status affectedRow='|| lXml.getClobVal() ||'>success</status></result>';
EXCEPTION
  WHEN OTHERS THEN
    RETURN '<result><status>Error</status></result>';

END get_all_payroll_transactions;

2 个答案:

答案 0 :(得分:4)

如果您真的想使用cakephp表达式

,这应该可行
->where([
    'OR' => [
        'Users.first_name LIKE' => "%$keyword%",
        'Users.last_name LIKE' => "%$keyword%"
    ]
])

但你可以做到

{{1}}

答案 1 :(得分:0)

这不是最好的方式,但可能有效:

 $users = $this->Users
        ->find()
        ->where(function ($q) use ($keyword) {
            return $q
            ->like('Users.first_name', "%$keyword% OR Users.last_name LIKE %$keyword%");
        })
        ->limit(5)
        ->toArray();

如果这不起作用,CakePHP Documentation的这一部分可能会有所帮助