问题标签 [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.

0 投票
2 回答
2140 浏览

cakephp - 包含条件的分页适用于 hasOne,但不适用于 hasMany

例如,我有这样的关系:

而且我需要对联系人进行分页,所以我使用了 Containable:

我想通过 Info.name 和 Response.description 添加搜索。它非常适合Info.name ,但如果我尝试使用Response.description ,它会引发错误,说该列不存在。

此外,我尝试将关系更改为 Contact hasOne Response,然后正确过滤,但它只返回第一个响应,这不是正确的关系。

因此,例如,如果我有一个搜索键$filter我只想返回那些具有匹配Info.name或至少一个匹配Response.description的联系人。

0 投票
2 回答
1200 浏览

cakephp - CakePHP - 将一个模型的结果限制为关联模型中具有匹配条件的结果

我刚刚开始使用 CakePHP,并且遇到了将检索结果限制为关联模型中的字段与某个值匹配的结果的麻烦。我在这里和其他地方发现了很多相关的问题,但它们似乎处理的情况比我的场景更复杂或更简单,所以我们开始吧:

我有两个我感兴趣的模型:ImageCollection,它们通过HABTM关系关联。通过连接表collections_images在 Image.php 和 Collection.php 中正确设置了关系,并且我在写入或检索数据方面一般没有问题。在 Image 模型中也正确设置了Containable 。

我想做的是在 $this->Image 上运行 find(),并且只返回属于特定集合的那些,其标题是$collection。我已经尝试了几种不同的方法:

为此,我收到以下错误:

错误:SQLSTATE [42S22]:找不到列:1054 'where 子句'中的未知列 'Collection.title'

看来你不能直接通过相关模型建立搜索条件,所以我回去尝试限制我的包含如下:

这次我得到了结果,但它们包含不属于正确集合的图像。这是 pr() 为我提供的$collection = "Urban"的简化片段:

如您所见,它忽略了Collection标题与$collection不匹配的图像的Collection数据,但它仍然包括Image数据。

我在这里想念什么?有没有办法让这两种方法中的任何一种都能达到我的目标?

为了记录,我也从另一个方向着手:

它只返回所需的数据。但是,它返回的数据的数组结构在我的代码的其他地方造成了复杂性,我希望最终能够直接从Image分页。

谢谢大家的时间和帮助。

编辑

经过额外的搜索,我在这里找到了一个可以接受的解决方案:

http://cakebaker.42dh.com/2007/10/17/pagination-of-data-from-a-habtm-relationship/

这需要我为映射表“CollectionsImage.php”创建一个模型,并建立与ImageCollection的hasOne关系。然后在CollectionsImage上执行 paginate() ,如下所示:

这似乎有点迂回,我需要一个额外的步骤来找到具有指定标题的集合的 id,所以我仍然想知道是否有人知道更直接的解决方案。

0 投票
2 回答
2005 浏览

cakephp - cakePHP 可包含模型不应为空

我在过滤记录时遇到问题,我不希望任何记录有空模型。

我检查了 Orderstatus 表中的一个条件,用于选择已发货的 orderstatustype_id LIKE 5。

我只需要运输记录,但它会提取所有记录,如下所示

我只需要过滤发货记录..请帮帮我..

0 投票
1 回答
6229 浏览

cakephp - CakePHP - 用关联查找条件

我对 cakePHP 查找条件有疑问。我有一个 Club 模型、一个 User 模型和一个 Post 模型:

俱乐部有很多帖子

俱乐部 HABTM 用户

基本上,我的 clubs_users 表还包含附加字段,例如“限制”和“差异”,它们分别表示用户想要显示的最大帖子数以及允许这些帖子的年龄。我想为与给定用户相关的每个俱乐部选择合适的帖子。我正在做这样的事情

我应该放什么而不是 1 和 2 才能使它起作用?我尝试了 ClubsUser.diff 和 ClubsUser.limit 但我收到一个错误,指出这些字段在 where 子句中是未知的。

欢迎任何帮助。

谢谢阅读。

编辑

在bancer 的评论之后,我更深入地查看了 MySQL 文档,看起来 LIMIT 只需要数字参数。所以我现在只想退回那些不太老的帖子。我的新发现是(带有实际字段名称)

它生成以下三个 SQL 查询(为了清楚起见,我用 * 替换了字段名称):

最后一个查询返回错误:where 子句中的字段“ClubsUser.max_time_posts”未知

理想情况下,我希望得到一个接近下面的查询,而不是上面的最后两个查询:

有任何想法吗 ?

0 投票
2 回答
999 浏览

cakephp - CakePHP 基于分页关联数据的过滤

这是我的场景:

  • 我有两个表:subfirms 和 subfirmdetails。
  • 我正在尝试对子公司进行分页,但使用取决于某些 subfirmdetail 值的过滤器,例如 AUM(公司的总资金)。

这是我的分页代码:

假设我希望 Subfirmdetail.value 为 40,否则不显示公司。这是我试图基于(甚至更深......)过滤的场景类型。被卡住了一段时间,所以任何帮助将不胜感激!

0 投票
1 回答
183 浏览

cakephp - Cakephp 和可包含的错误

我的 appModel 中有可包含的行为。当我在我的资产模型中这样做时:

我收到以下错误:致命错误:调用非对象上的成员函数包含()

但是,当我像这样使用包含时,它可以正常工作:

有任何想法吗?

0 投票
3 回答
5623 浏览

cakephp - CakePHP 包含不适用于递归

当我尝试:

它不会限制输出 - 我得到每个相关的模型。但是,当我没有指定recursive2时,或者如果我将其指定为1,我就错过了Comment=>Poster模型。

我怎样才能只得到我需要的模型?谢谢!

0 投票
1 回答
363 浏览

cakephp - Cakephp 按组查找可包含/可链接

我在 cakephp 2.1 应用程序标签、类别、产品中有 3 个模型。

产品通过 hasOne 关系与 Category & Label 相关联。

使用可包含或可链接来实现以下数据结构的最有效方法是什么。

基本上我想按类别对产品进行分组,按标签对类别进行分组。

我能想出的唯一解决方案是通过检索产品来修改 afterFind 样式的数据

然后使用 foreach 对结果进行迭代以重新格式化数据结构以获得所需的结果。

0 投票
2 回答
740 浏览

cakephp - 深度可包含关联在 cakephp 1.3.0 中不起作用

我的模型中有以下关系

基本索引属于申请人

申请人有很多请求

因此,我想检索 BasicIndexing 模型并包含申请人模型和申请人相应的请求,如下面的代码所示

问题是返回的结果$searchResult根本不包含 Request 模型。它只包含申请者模型并忽略请求模型。我尝试使用与申请人无关的模型,但我收到模型未与申请人模型关联的警告。

我做错了什么还是蛋糕 1.3.0 版本有问题?

任何帮助将不胜感激。

谢谢。

0 投票
1 回答
1083 浏览

cakephp - CakePHP 可包含在关联模型上

我有一个设置,其中有Books UsersLogs。每个日志都有一本书和一个用户,我试图检索所有书籍的列表,而不考虑用户,但随后也检索与该书籍关联的日志(递归设置为 1),但随后只检索日志当前登录的用户。

希望这很清楚。我尝试使用 Containable ,就像这样:

$this->Book->contain('Log.user_id = 2');

但不幸的是,这忽略了用户 2 没有日志的书籍。我是否正确地解决了这个问题,我只是没有正确使用可包含的内容,还是我做错了。

任何帮助表示赞赏