问题标签 [containable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - CakePHP 1 级以上的订单查询结果
我正在使用 Containable 行为来获取评论列表(属于发布,属于问题;问题有很多帖子,发布有很多评论;所有这些都属于用户)。
当我在上面的评论中注释掉该部分时,它起作用了。我想这是可以预料的,但我想要的是所有找到的帖子,应该按照它们所属的“用户”的“创建”字段的顺序进行排序。如何在 CakePHP 中完成这种更深层次的排序?我总是得到,“警告(512):SQL 错误:1054:'order 子句'中的未知列'User.created'”
谢谢你的帮助!
performance - CakePHP - 在 AppModel 中将递归设置为 -1,然后根据需要使用可包含行为
在使用 CakePhp 时,是否建议在 AppModel 类中设置 recursive = -1,然后在需要更深的数据关系时使用 Containable Behavior?
我相信这将为我的应用程序提供避免与数据库相关的缓慢性能的最佳机会,但该方法是否合理?
谢谢
狮子座
sql - CakePHP 重复相同的查询
我有一个模型结构:Category hasMany Product hasMany Stockitem belongsTo Warehouse, Manufacturer。
我使用这段代码获取数据,使用 containable 能够在相关模型中进行更深入的过滤:
数据结构返回得很好,但是,我得到多个重复查询,例如,有时基于数据集连续数百个这样的查询。
基本上,在构建数据结构时,Cake 会一遍又一遍地从 mysql 中获取数据,对于每一行。我们有几千行的数据集,我感觉它会影响性能。是否可以使其缓存结果而不重复相同的查询?
php - CakePHP:如何更改此查找调用以包含关联表中不存在的所有记录?
我有一些具有以下关系的表:
公司有许多工作、员工和卡车、用户
我已经正确设置了所有外键,以及表的模型、控制器和视图。
最初,Jobs 表有一个名为“assigned”的布尔字段。以下 find 操作(来自 JobsController)成功返回了单个公司的所有员工、所有卡车和任何未分配且在某一天落下的工作(没有通过利用可包含行为返回用户):
现在,自从编写了这段代码,我决定在工作分配上做更多的事情。所以我创建了一个属于卡车和属于工作的新模型“分配”。我已将 hasMany 分配添加到 Truck 模型和 Jobs 模型。我在分配表中有两个外键,以及其他一些分配字段。
现在,我试图获取上面相同的信息,只是不想检查作业表中的分配字段,而是要检查分配表以确保该作业不存在。如果由于 mysql 错误(根据说明书)而要使用 find 方法的“joins”功能,我将无法再使用可包含的行为。但是,以下查询会返回所有工作,即使它们属于不同的日期。
编辑:事实证明,我的查询有效,我的数据存在问题,导致所有分配都被返回。
cakephp - 可包含的行为不会从深度 3 返回 - CakePHP
我使用的是 CakePHP 1.2.6 并且有以下关系:
展示 HABTM 用户属于图库项目 hasOne Image
我尝试获取与 Showcase 相关的所有数据,因此也获取其所有用户及其 Galleryitem -> Image。我使用以下查询:
这确实返回和空数组,Galleryitem
因此根本没有Image
记录。如果我尝试以下操作:
我确实在这里得到了一些关于Image
. 因此,深度似乎在这里发挥了作用。
想到的其他因素是和之间的belongsTo
关系。User
Galleryitem
是什么导致我的查询不返回深度为 3 的数据?
更新
Showcase 关系集在我的项目中比我上面解释的要分支得多。所有其他分支都正确显示。所以我想这与这个分支中的特定关系有关,User belongsTo Galleryitem
.
仍然很奇怪,因为其他分支包含这组完全相同的Galleryitem hasOne Image
关系。
search - 如何使用可包含行为在第三级实现搜索
我开发了一个蛋糕 php 应用程序。
在这有学生,展示位置,批次,公司等表
在展示位置表中有 student_id、company_id,在学生表中有 batch_id 列。
在展示位置索引页面中,我应用了 jq 网格。这是屏幕截图。
我想搜索学生、公司和批次。为此,我在放置控制器索引函数中使用了可包含的行为。
网格中填充了学生姓名、公司名称和批次名称(如果有)。如果我按学生姓名和公司名称搜索,搜索也可以正常工作,但是当我尝试按批次名称搜索时,出现以下错误:
我认为从查询中可以看出学生和批次之间的关系不起作用。
我无法弄清楚它为什么会这样。
请帮助我。
谢谢
cakephp - 在 CakePHP 1.3.4 中使用“字段”时,Containable 无法加入 belongsTo 关系
(CakePHP 版本 1.3.4)
我在 Contact 模型与 Account 和 Test 模型之间有以下关联:
以下查询可以正常工作:
但是,一旦引入“字段”,与 Account 关联的 belongsTo 关联就会中断,但与 Test 的 hasMany 关联仍然很好:
其他人似乎有这个问题吗?
php - CakePHP 可包含的内容没有以正确的方式过滤
就像 cakephp 手册中的示例一样,http://book.cakephp.org/view/1323/Containable#Containing-deeper-associations-1325,我需要通过关联模型上的条件从模型中获取数据。
我有:
模型语言:
和关联,ModelTranslation
当我做:
我收到所有语言,而不仅仅是一种(因为 LanguageTranslation 中的 id 是唯一的)。结果必须是一个!
所以,与
结果是:
为什么我不能只捕获 id = 1 的语言?
cakephp - 让 CakePHP 的可搜索行为结果包含更深层次的关联
我正在尝试使用 CakePHP 1.3.5 的可搜索行为和可包含行为来返回指定模型和关联模型(文章属于用户)的搜索结果。
暂时忽略可搜索行为,以下调用find():
执行此 SQL 查询:
并返回以下数组:
这正是预期的结果。但是,以下对search()的调用:
执行此 SQL 查询:
并返回这个数组:
查看 search() 方法,它正在返回$this->SearchIndex->find('all', $findOptions);
. $findOptions包含以下内容:
关联不会一路丢失,因为在 SearchableBehavior$this->SearchIndex->Article->belongsTo['User']
内部,在 search() 方法内部调用 find() 之前和之后立即存在且完整无缺。
对于以下所有'contain' 值,对 search() 的调用返回完全相同的内容:
难道我做错了什么?我想我使用的格式与 CakePHP 文档中指示的格式相同,而且我还没有在网上找到任何建议您必须做一些特殊的事情才能获得包含相关数据的搜索结果。
我知道我可以通过对 find() 的额外调用来查找用户轻松地实现我想要的结果,但我希望让可包含的行为像预期的那样工作,并减少不必要的额外数据库查询。