如何在 CakePHP 中生成 MySQL IS NOT NULL 条件?

2024-01-07

我正在尝试获取结果的子集作为 virtualField 以在我的视图中使用。我什至可能不知道如何解决这个问题,但这是我到目前为止所做的:

我在这里从这个问题开始:CakePHP virtualField 查找所有不为空 https://stackoverflow.com/questions/20458331/cakephp-virtualfield-find-all-not-null/20458367?noredirect=1#comment30568626_20458367这导致这个小美女 http://book.cakephp.org/2.0/en/models/virtual-fields.html#virtual-fields-and-model-aliases.

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

我的代码如下所示:

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)));
}

我看到:

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 and "Transaction.account !=",无济于事。我发现了(数组)的一些其他问题,但没有一个对我的情况有帮助。任何指向正确方向的指针都会很棒。


Problem:您的查询结果是一个数组,并且您告诉 SQL 为包含该数组的每个查询结果分配一个字段名称 - 虚拟字段仅包含单级变量(例如字符串)。

解决方案: use a join结构本身与这些条件将返回一个嵌套的结果集以及每个结果。使用CakePHP 的模型关系 http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html去做这个:

<?php    
class Transaction extends AppModel {
    var $hasMany = array(
        'Accounts' => array(
            'className' => 'Transaction',
            'foreignKey' => false,
            'conditions' => array('Accounts.account IS NOT NULL')
        )
    );
}    
?>

输出示例:

Array(
    'Transaction' => array( // transaction data),
    'Accounts' => array( // associated transaction data with account set to null
)

现在,您可能可以从该结果中得知,如果您从以下位置返回 1000 行:Transaction, 你会得到all由于。。。导致的结果Accounts嵌套到每笔交易结果。这远非理想。从这里,您可以使连接条件更加具体以与目标相关Accounts记录,否则这不是适合您的方法。

其他方法可能是:

  • 账户模型、用途Transaction数据库表,隐式查找条件是account is null
  • 手动查询以检索这些结果afterFind() 方法 http://book.cakephp.org/2.0/en/models/callback-methods.html#afterfind你的Transaction模型,它将检索这些结果once,然后你就会return array_merge($accounts, $transactions)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CakePHP 中生成 MySQL IS NOT NULL 条件? 的相关文章

  • 数组向量无法编译[重复]

    这个问题在这里已经有答案了 这个简单的程序 include
  • Golang:获取切片的类型

    我正在使用 Reflect 包来获取任意数组的类型 但是得到 prog go 17 cannot use sample array1 type int as type interface in function argument proce
  • 课程完成时更新外部数据库

    我的场景 Moodle 中的用户完成了一门课程 一旦发生这种情况 我想更新外部数据库 我的理解是 每次运行 cron 作业时都会触发 course completed 事件 使用一些简单值 例如已完成课程的用户名 ID 课程 ID 以及完成
  • MySQL ORDER BY rand(),名称 ASC

    我想获取一个包含 1000 个用户的数据库并随机选择 20 个用户 ORDER BY rand LIMIT 20 然后按名称对结果集进行排序 我想出了以下查询not像我希望的那样工作 SELECT FROM users WHERE 1 OR
  • Ionic框架和php mysql

    我是 Ionic Apahce Cordova 的新手 我创建了一个简单的应用程序 它具有静态列表视图项 但我想从 MYSQL 表获取数据并将其替换到我的静态列表中 我用谷歌搜索了一下 有人在研究它 但我不知道应该把我的 php 文件放在哪
  • 返回深度嵌套数组中对象的索引的函数

    我可能需要编写一个函数 仅输出数组内对象的索引 显然 使用 inArray 在下面的示例中返回这个索引就可以了 array one two three inArray one array 0 对于更复杂的数组 如何找到嵌套对象的索引 arr
  • 如何在mySQL数据库中安全地插入代码

    我正在构建一个网站 用户可以使用 PHP 和 mySQL 数据库来存储代码片段 但我不知道如何安全地将用户输入的代码插入我的数据库 我无法使用我通常使用的 安全 功能来转换输入 trim stripslashes等 因为重点是您可以将代码视
  • 如何仅在内存中运行 Django 测试数据库?

    我的 Django 单元测试需要很长时间才能运行 因此我正在寻找加快速度的方法 我正在考虑安装一个SSD http en wikipedia org wiki Solid state drive 但我知道这也有其缺点 当然 我可以用我的代码
  • MS Access DAO 连接在退出时放弃更改

    因此 我有一个 Access 表单 我在其中使用此 VBA 代码以及与 MySQL 数据库的 DAO 连接 一切都很好 但如果用户关闭表单而不单击 保存 按钮 新记录无论如何都会保存 所以我正在寻找的是 是否有任何方法可以在关闭事件时阻止将
  • 分配字节数组时出现奇怪的错误

    byte frame to send new byte 6 code frame to send 0x68 0x04 0x83 0x00 0x00 0x00 Array edit Error 无效的表达式术语 预期的 您只能在构造时初始化时
  • 重新排列关联数组的最优雅的方法是什么?

    假设你有一个关联数组 hash Fruit Apple hash Name Jeff hash Car Ford 并且您无法更改这些变量的创建顺序 因此 Car 总是在 Name 等之后添加到数组中 将 Car 添加 移动到关联数组的开头而
  • 在 AS3 中将 Little-endian ByteArray 转换为 Big-endian

    AS3中如何将Little endian ByteArray转换为Big endian 我将 bitmapData 转换为 Big endian ByteArray 然后使用 Adob e Alchemy 将其推入内存 然后当我从内存中读取
  • 在 Mac 上设置 Laravel php artisan 迁移错误:没有这样的文件或目录 [重复]

    这个问题在这里已经有答案了 将一个完美运行的 laravel 项目从 git 拉到运行 MAMP 的 mac 上 项目在linux机器上完美运行 作曲家安装 php artisan migrate 出现以下错误 PDOException S
  • 通过php在csv单元格中创建回车符

    我正在尝试动态生成一个 csv 文件 其中包含一些包含多行的单元格 例如 地址字段需要分组为单个 地址 单元格 而不是地址 城市 州等 一切进展顺利 但在过去的两天里 我尝试在代码中插入 r r n n chr 10 chr 13 以及回车
  • MySQL 1443:这是什么意思?

    我正在尝试在 MySQL 5 0 中进行以下形式的更新 update mytable myfield t set f blah where t id in select v id from myview v where MySQL 告诉我
  • 从 mongoDB 数组中获取特定元素[重复]

    这个问题在这里已经有答案了 我有像下面这样的 mongo 集合 auther xyz location zzz books book1 b1 date 2 3 00 book1 b2 date 4 9 00 auther pqr locat
  • 访问二维数组的一行末尾之后的元素是否是 UB?

    以下程序的行为是否未定义 include
  • Docker 应用程序更新后无法连接到数据库

    在我的公司 我有一个旧的 Symfony 应用程序在 Docker 容器中运行 该应用程序连接到一个 SQL 数据库 该数据库也在 Docker 容器内运行 该图像是使用 php 7 2 apache stretch 构建的 但该版本已不再
  • 在 PHP 中将数组转换为字符串并将其恢复为数组

    我正在使用 Serialize 函数将数组存储在我的 MYSQL 数据库中 然后我在其他页面中取消序列化他 数组结构如下所示 Array 0 gt Array names gt somename1 rating gt 10 1 gt Arr
  • 可变长度数组性能影响 (C/C++)

    我正在编写一个相当简单的函数 它将数组发送到文件描述符 但是 为了发送数据 我需要附加一个一字节标头 这是我正在做的事情的简化版本 它似乎有效 void SendData uint8 t buffer size t length uint8

随机推荐