如何使用 HABTM 关系在 CakePHP 中查询数据?

2024-01-20

我正在开发 CakePHP 1.2 应用程序。我有一个模型“用户”,通过连接表定义了与其他表的一些 HABTM 关系。

我现在的任务是根据这些 HABTM 表之一中存储的数据查找用户信息。不幸的是,当查询执行时,我的条件被拒绝,并出现有关缺少表的错误。经检查,CakePHP 似乎没有在 select 语句中包含任何 HABTM 表。

我的用户HABTM关系如下:

    var $hasAndBelongsToMany = array(
    'Course' => array(
        'className'             => 'Course',
        'joinTable'              => 'course_members',
        'foreignKey'             => 'user_id',
        'associationForeignKey'  => 'course_id',
        'conditions'             => '',
        'order'                  => '',
        'limit'                  => '',
        'uniq'                   => false,
        'finderQuery'            => '',
        'deleteQuery'            => '',
        'insertQuery'            => ''
    ),
    'School' => array(
        'className'             => 'School',
        'joinTable'              => 'school_members',
        'foreignKey'             => 'user_id',
        'associationForeignKey'  => 'school_id',
        'conditions'             => '',
        'order'                  => '',
        'limit'                  => '',
        'uniq'                   => false,
        'finderQuery'            => '',
        'deleteQuery'            => '',
        'insertQuery'            => ''
    ),
    'Team' => array(
        'className'             => 'Team',
        'joinTable'              => 'team_members',
        'foreignKey'             => 'user_id',
        'associationForeignKey'  => 'team_id',
        'conditions'             => '',
        'order'                  => '',
        'limit'                  => '',
        'uniq'                   => false,
        'finderQuery'            => '',
        'deleteQuery'            => '',
        'insertQuery'            => ''
    )
);

错误是:

SQL 错误:1054:未知列 “where 子句”中的“学校名称”

最后,它尝试执行的查询

     SELECT 
 `User`.`id`, `User`.`username`, `User`.`password`, `User`.`firstName`, `User`.`lastName`, `User`.`email

`, `User`.`phone`, `User`.`streetAddress`, `User`.`city`, `User`.`province`, `User`.`country`, `User

`.`postal`, `User`.`userlevel`, `User`.`modified`, `User`.`created`, `User`.`deleted`, `User`.`deleted_date

` FROM `users` AS `User`   WHERE `User`.`id` = 6 AND `School`.`name` LIKE '%Test%'    LIMIT 1

将调试级别调高至 2 并查看 SQL 输出。找到您的代码生成的查询,您会发现有几个查询。 CakePHP 中的 ORM 层不会在第一个查询中连接 HABTM 相关表。它从第一个选择中获取结果,然后分别获取每个项目的 HABTM 数据。由于连接表不在第一个查询中,因此您的条件(旨在用于连接表)会导致您看到的错误。

这本烹饪书有一个章节是关于HABTM 协会 http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasandbelongstomany-habtm并根据 HABTM 表中的条件获取符合您要求的数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 HABTM 关系在 CakePHP 中查询数据? 的相关文章

  • SQL 大表中的随机行(使用 where 子句)

    我有一个网站 人们可以在其中对汽车进行投票 向用户展示 4 辆汽车 他 她可以投票选出他们最喜欢的汽车 桌子cars有重要的列 car id int 10 not auto increment so has gaps views int 7
  • 使用 .htaccess 启用 PHP 短标签

    我在自己的 Centos 服务器上设置了 Apache 并具有多个虚拟 Web 服务器 并且我希望仅为位于以下位置的其中一个 Web 服务器启用 PHP 短标记 var www ostickets html 我可以通过添加成功启用短标签sh
  • 如何将 php Web 应用程序转换为桌面应用程序并保留数据库 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们有一个用 PHP 开发的 Web 应用程序 但大多数客户并没有一直连接到互联网 那么 有没有办法将应用程序转换为桌面应用程序 以便
  • 使用 PDO 准备语句使用搜索字段中的多个关键字进行 LIKE 查询

    网站用户使用搜索表单来查询产品数据库 输入的关键字在数据库中搜索产品的标题 public function startSearch keywords keywords preg split s keywords totalKeywords
  • 更新重复密钥上的复合密钥 [重复]

    这个问题在这里已经有答案了 我需要更新新行 如果两者都满足 date dat and empId who 作为复合键 但如果其中之一或两者不同 则插入 sql INSERT INTO history SET endtimestamp now
  • 如何让 shell_exec 在 IIS 6.0 上运行

    问题 我有一个 PHP 脚本 它使用shell exec运行 pdf 到文本转换器 为了简化问题 我创建了一个简短的脚本 使用shell exec只是回显的输出dir命令 当我在 Apache 服务器上运行它时 一切都按预期运行 当我切换到
  • 使用 PHP/COM/ADSI/LDAP 更改 AD 密码

    我已经被这个问题困扰了好几天了 我尝试了各种解决方案均无济于事 请帮忙 Problem 我们有两个域控制器 它们不属于我们的管理范围 我们能够通过端口 389 上的 LDAP 进行连接 但无法通过端口 636 安全连接 我们正在开发一个系统
  • Ubuntu 18.04升级后php7.2-curl无法安装

    今天从 16 04 升级到 18 04do release upgrade d 在升级过程中 我被告知一些软件包将被删除 其中包括 删除 libperl5 22 lxc common perl modules 5 22 php imagic
  • Javascript 函数与 php 一样吗?

    我在网站上使用 WebIM 提供聊天支持 我希望能够在客户端启动聊天会话时设置一个计时器 如果操作员 技术人员在 x 秒内没有响应 我希望页面重定向到客户端可以留言的另一个页面 有点像 请稍等 我们尝试联系您 这样 如果所有技术人员都太忙或
  • 使用 HTTP-Basic 身份验证发出 HTTP GET 请求

    我需要为我正在开发的 Flash Player 项目构建一个代理 我只需要使用 HTTP Basic 身份验证向另一个 URL 发出 HTTP GET 请求 并提供来自 PHP 的响应 就好像 PHP 文件是原始源一样 我怎样才能做到这一点
  • CSS 无法与 CodeIgniter 一起使用

    这是我的 CI 代码的一部分 class page extends CI Controller var Page public function construct parent construct this gt Page 1 this
  • Facebook 中用户的时区是如何编码的

    我需要检查用户的时区 但我找不到它的真正定义 参考API http developers facebook com docs reference api user says 用户的时区与 UTC 的偏移量 现在在维基百科上这些是可能的时区
  • Node.js 进行 rsa 加密的正确方法?

    我正在尝试创建一个 WS 来发出肥皂请求 在消息正文中有一个包含加密文本的字段 我有公钥来加密文本 但我获得的唯一结果是文本无法识别 我使用节点的加密模块来发出请求 并且文本已加密 但我不知道为什么没有正确加密 PS我用 openssl p
  • 访客客户检查 Woocommerce 订单账单电子邮件时可享受首单折扣

    通过对照正在处理和已完成的订单检查来宾客户的电子邮件地址 如果电子邮件没有订单 我想给来宾 首单折扣 如果这能在客人输入电子邮件时发生 那就太好了 我想我已经成功制作了折扣代码 现在我请求帮助合并这两个代码 使其一切正常 这是折扣代码 ad
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • 通过ajax执行后期操作时如何克服CORS重定向问题?

    我可以通过外部登录表单中的 post 方法类型提交表单来登录 roundcube 实例 托管在另一台服务器上 我收到此错误 通过 ajax 签名时 XMLHttpRequest 无法加载https 192 168 0 7 mail http
  • 隐藏产品价格和添加到购物车按钮,但不隐藏 WooCommerce 中未注册用户的变体

    在我的 WooCommerce 商店中 我想隐藏价格 直到客户登录为止 我有以下代码可以实现这一点 add action init hide price function hide price if is user logged in re
  • Laravel - 覆盖模型 ID

    我正在开发电子书管理系统 我使用 UUID 而不是自动递增整数主键 它工作得很好 protected static function boot parent boot static creating function model model
  • 如何显示 PHP 对象

    我有这样的代码 dataRecord1 client gt GetRecord token table filter echo pre print r dataRecord1 echo pre foreach dataRecord1 gt

随机推荐

  • sh:语法错误:错误的 fd 编号 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一些
  • ASP.NET Web API 多个 RoutePrefix

    开源属性路由 http attributerouting net route prefixes允许有多个路由前缀 为什么 ASP NET Web API 2 0 不允许有多个 RoutePrefix RoutePrefix api v1 a
  • 已检查=“已检查”与已检查= true

    下面两种用法有什么区别 document getElementById myRadio checked checked and document getElementById myRadio checked true 对我来说 两者的行为方
  • Android 加速度传感器

    我正在尝试使用加速度计传感器 所以我尝试了这个 例子 http blog androgames net 85 android accelerometer tutorial http blog androgames net 85 androi
  • 在 Visual Studio 2013 中生成 .edmx EF6 时出现问题

    我正在尝试针对 mssql 2012 或 2008 数据库服务器和表集在 Visual Studio 2013 中为我的数据库生成 edmx 文件 edmx 文件生成时没有问题 并且在我尝试编译项目之前一切看起来都很好 代表数据库表的每个对
  • 适用于 .net/PowerShell 的良好内存数据库?

    如果我有一个处理稍微复杂一点且可以存储在变量中的状态信息的脚本 那么对于小型内存数据库来说 最佳选择是什么 Sqlite 是一个选项 尽管这将是一个外部依赖项 XML 也可以 尽管它是非关系型的 对于这项工作的工具有什么共识吗 考虑到 Po
  • Linux 64 位 shellcode

    我正在尝试在 Ubuntu 64 位上编写我的第一个 Hello world shellcode 但它不起作用 我有文件你好 asm 64 bit Hello World in Linux NASM global start global
  • 如何下载旧版本的 STS? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找下载3 6 0 sts bundle但我找不到执行此操作的地方https spring io
  • 如何用opencv改变饱和度值?

    为了将恒定值添加到每个像素的饱和度值 我在双循环中执行此操作 我想知道是否有更简单 更快的命令来实现这一点 对于我尝试的实验 分割 hsv 值 调整各个通道然后进行合并的替代方法提供了更好的性能 与循环像素相比 下面的方法对我来说要快很多倍
  • 如何轻松地重新排序TabControl?

    我有一个TabControl我在 VS2005 设计器中设计的 大约有 7 个选项卡 如何轻松切换选项卡的顺序 我匆忙地在末尾放了一个标签 但现在我想把它放在中间的某个地方 在选项卡控件的属性中 有一个 TabPages 集合 你应该能够在
  • Wordpress AJAX 调用出现 400 错误请求 [重复]

    这个问题在这里已经有答案了 我正在为 WordPress 网站的前端开发一个搜索插件 目前我不断收到 400 Bad Request 错误 但我不明白为什么 我已经审查了许多关于 SO 和 WordpressStackExchange 的问
  • 如何将图片合并到 WriteableBitmap 中?

    我有一个像这样的位图 var map new WriteableBitmap 800 800 800 800 PixelFormats Bgr32 null 然后我有一个 50x50 png 图片 我想将其合并到此位图 包括透明度 中 位置
  • 创建类似于fb:tag

    我想创建类似于 fb 标签的东西 例如 如果您将 fb comments 放入代码中 它将显示您来自 Facebook 的评论 当然 您需要在 HTML 头中包含 Facebook xmlns 如何创建自己的标签来执行加密等操作 例如
  • 尽管智能感知列出了它,但找不到定义?

    我在 Visual Studio 10 现在也是 11 中遇到了一个奇怪的错误 我有一个扩展方法 public static S Foo
  • 使用包标识符打开应用程序

    是否可以从我们的应用程序中打开应用程序bundle identifier 假设我在第一台设备上安装了两个应用程序com test app1 and com test app2 我可以从我的 app2 中打开 app1 吗 我知道 openU
  • 如何在 pywinauto 中通过正则表达式标题搜索子代/后代?

    我正在尝试通过正则表达式标题获取另一个 UI 元素的子 后代 UI 元素 例如 以下代码应该可以工作 from pywinauto application import Application WindowSpecification roo
  • Android gradle-experimental 0.2.0 添加 res 和 aidl

    我正在努力在 Android Studio 1 3 Gradle 2 5 和 gradle experimental 插件 0 2 0 中使用外部库 因为 NDK 需要这些库 我找到了一些材料here http tools android
  • 使用 AutoLayout 在自定义 UITableViewCell 中使用 Aspect Fill 的 UIImageView

    我一直在努力适应UIImageView显示可变宽度和高度的图像Aspect Fill 单元高度不适应新的高度UIImageView并坚持它的高度 视图的层次结构是这样的 UITableViewCell UITableViewCell Con
  • Firebase 显示成功但未发送云消息(Android - PHP)

    我已经做了很多研究来找出它导致问题的原因 但我仍然无法弄清楚为什么 我可以从控制台发送通知 我可以使用控制台中的令牌向一台设备发送通知 但我无法从 PHP 发送云消息 我还编辑了 build gradle 并添加了给定 firebase 的
  • 如何使用 HABTM 关系在 CakePHP 中查询数据?

    我正在开发 CakePHP 1 2 应用程序 我有一个模型 用户 通过连接表定义了与其他表的一些 HABTM 关系 我现在的任务是根据这些 HABTM 表之一中存储的数据查找用户信息 不幸的是 当查询执行时 我的条件被拒绝 并出现有关缺少表