【问题标题】:ZEND FRAMEWORK => CONCAT to SelectZEND FRAMEWORK => CONCAT 来选择
【发布时间】:2012-04-16 17:08:30
【问题描述】:

我有这个问题:

->join(array('p'=>'persona'),'u.persona_id=p.id',array('nomp'=> new Zend_Db_Expr("CONCAT(p.nombre, ' ', p.apellidos)")))

我将 (p.nombre y p.apellidos) 连接起来并给它们命名为“nomp”

当我执行“Where”并给它一个“LIKE”时,我会查找列“nomp”,zend 告诉我该列不存在。

你知道任何其他的连接方式。

【问题讨论】:

  • 你能给出执行这个查询的PHP代码吗?
  • 其实你的 Concat 方式对我有用

标签: zend-framework zend-db zend-db-table


【解决方案1】:

你好,你可以试试这个

 ->join(array('us' => 'user_subscriptions'), "user_name" => new Expression("CONCAT(first_name,' ',last_name)"), array('user_end_date' => 'end_date', 'sso_subscription_status' => 'subscription_status'), 'left');

希望对你有帮助

【讨论】:

    【解决方案2】:

    考虑这个 SQL:

    Select x.id, CONCAT(fname,' ',lname) as name 
    from 
    (Select 1 as id) x
    inner join 
    (Select 1 as id,"Tom" as fname,"Johns" as lname) p on x.id = p.id
    WHERE name = 'Tom Johns'
    

    它与您实际生成的相似。 join 中的第三个参数是将要为该表添加的主选择列表的一部分。 如您所见,变量名称是在选择列表中定义的,因此您不能在 WHERE 中使用它。您的解决方案是将 SQL 更改为类似的内容。

    WHERE CONCAT(fname,' ',lname) like 'Tom Johns'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多