首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中生成一个非空条件?

问如何在MySQL中生成一个非空条件?
EN

Stack Overflow用户
提问于 2013-12-08 21:52:44
回答 1查看 4.4K关注 0票数 3

我正在尝试作为一个virtualField来获得一个结果子集,以便在我的视图中使用。我甚至可能对我是如何处理这个问题的,但是我已经做了如下的事情:

我从这个问题开始:CakePHP virtualField查找所有非空,这导致了这小小的美。

现在,我遇到了一个问题,find语句将(Array)传递到MySQL中。

我的代码看起来是:

代码语言:javascript
复制
class Transaction extends AppModel {
public function __construct($id = false, $table = null, $ds = null) {
    parent::__construct($id, $table, $ds);
    $this->virtualFields['Accounts'] = $this->find("all", array("conditions" => array("account !=" => null)));
}

我看到:

代码语言:javascript
复制
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'field list'

SQL Query: SELECT `Transaction`.`id`, `Transaction`.`name`, 
`Transaction`.`person_id`, `Transaction`.`account`, (Array) 
AS `Transaction__Accounts` FROM `my_database`.`transactions` 
AS `Transaction` WHERE `Transaction`.`person_id` = (2)

我也尝试过$this->Transaction->find和"Transaction.account !=",但没有结果。我在(Array)中发现了一些其他问题,但没有一个问题对我的情况有帮助。任何指向正确方向的指示都是很棒的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-08 22:04:17

问题:您的查询结果是一个数组,您告诉为每个包含该数组的查询结果分配一个字段名--虚拟字段只用于包含字符串之类的单级变量。

解决方案:在自身上使用一个join结构,这些条件将返回嵌套的结果集和每个结果。使用CakePHP模型关系执行以下操作:

代码语言:javascript
复制
<?php    
class Transaction extends AppModel {
    var $hasMany = array(
        'Accounts' => array(
            'className' => 'Transaction',
            'foreignKey' => false,
            'conditions' => array('Accounts.account IS NOT NULL')
        )
    );
}    
?>

示例输出:

代码语言:javascript
复制
Array(
    'Transaction' => array( // transaction data),
    'Accounts' => array( // associated transaction data with account set to null
)

现在,您可能可以从该结果中收集到,如果从Transaction返回1000行,那么您将得到所有结果(从Accounts嵌套到--每个事务结果)。这远非理想。从这里开始,您可以使联接条件更具体地针对相关的Accounts记录,或者这不是适合您的方法。

其他办法可以是:

  • 帐户模型,使用Transaction数据库表,隐式查找条件为account is null
  • 在afterFind()方法 of Transaction模型中检索这些结果的手动查询,该查询将检索这些结果--,一次,然后是return array_merge($accounts, $transactions)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20459606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档