问题标签 [cakephp-3.3]

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 投票
0 回答
374 浏览

php - 使用由 3 列组成的复合主键保存 hasMany 关联数据

我有两张表,即评论和评级。Comments 表有主键['comment_id','source_id'],Ratings 表有主键['comment_id','source_id','topic_id']

模型关系定义如下:

我想插入多条评论,每条评论都会有多个与之相关的评分,每条评论下的不同评分属于不同的评分主题。我正在尝试使用 saveMany 语法保存评论及其相关评级,但是 cakePHP 正确保存评论但两个评级都没有保存,它只保存最后一个评级。

我做了一个 SQL 日志,发现了这个:

调试:持续时间=0 行=0 BEGIN

调试:duration=1 rows=0 SELECT 1 AS existingFROM comments as comments WHERE (comments.comment_id = '12' AND comments.source_id = 4) LIMIT 1

调试:duration=1 rows=1 INSERT INTO comments (comment_id, source_id, travel_date) VALUES ('12', 4, '')

调试:duration=1 rows=0 SELECT 1 AS existingFROM rating as rating WHERE (ratings.comment_id = '12' AND rating.source_id = 4) LIMIT 1

调试:持续时间=1 行=1 插入评分(comment_id、source_id、topic_id、评分、创建)值('12'、4、5、4、'2017-02-09 13:06:04')

调试:duration=1 rows=1 SELECT 1 AS existingFROM rating as rating WHERE (ratings.comment_id = '12' AND rating.source_id = 4) LIMIT 1

调试:持续时间 = 1 行 = 1 更新评级 SET topic_id = 6 ,评级 = 5 ,创建 = '2017-02-09 13:06:04' WHERE(comment_id = '12' AND source_id = 4)

调试:持续时间=0 行=0 提交

如果您看到上面的日志,CakePHP 会检查是否有重复,并且如果记录已经存在,那么它会更新记录而不是添加新行。但是,这里的问题是,对于这个检查,CakePHP 只使用外键而不是目标表的主键。在我的情况下,主键包含 3 列,其中前 2 列构成外键。如何解决此问题并在这种情况下插入多重评分?

我已经在 SO 上搜索过,也用谷歌搜索过。找到的解决方案确实满足我的情况。我的情况不同,因为评级表有 3 列复合主键,而这 3 列中的前 2 列是评论表的外键。

0 投票
1 回答
432 浏览

mysql - CakePHP中复杂条件的ORM查询构建器

我有user_messages列的表id, sender_id, receiver_id, message, deleted

我必须检索所有这样的消息

目前,我正在使用这个查询生成器

生成 sql 查询为

如何编写优化的 ORM 查询来检索上述数据?

编辑 2:更新了 arilia 答案的查询

0 投票
1 回答
163 浏览

unit-testing - 是否可以使用 IntegrationTestCase 来断言EventFired?

我正在从我的控制器触发一个事件,我想断言它是在IntegrationTestCase. 我尝试使用该assertEventFired()方法,但出现错误:

您断言的事件管理器未配置为跟踪事件。

我看不到如何让控制器实例$controller->eventManager()->setEventList(new EventList());来启用事件跟踪。

是否可以使用 IntegrationTestCase 执行此操作,或者我是否需要像在核心测试套件中那样手动构建控制器Cake\Controller\Controller

蛋糕PHP 3.3.15

0 投票
1 回答
53 浏览

cakephp - CakePHP 3.3 表专用于基于所选语言的不同数据

我对 CakePHP 3.3 有一个非标准的问题。假设在我的数据库中,我有两个表:AB(两者是相同的,第一个专用于第一种语言的数据,第二个专用于第二种语言的数据)。

我为表格正确编码了整个网站A(表格B尚未使用)。另外,我实现了.po文件mechanizm来切换界面的语言。界面语言正确切换。

怎样才能轻松插表B——我不想IF-ELSE在所有情况下都发表声明,因为网站越来越大,表A中已经包含了很多操作。如果选择语言(通过文件),是否有可能以某种方式制作表A等于表的简单映射?Bpl_PLen_US.po

0 投票
1 回答
3379 浏览

php - CakePHP 3 中的自定义配置文件

我有一个 CakePHP 3.3.14 应用程序,我在其中创建了 2 个子目录,webroot/data/downloads/并且webroot/data/master

我想将这些路径放在自定义配置文件中并在 Controller 中引用它们。但我看不出如何做到这一点。

我遵循了有关配置的文档,但不是很清楚。

所以我做了什么:

  • 已创建config/my_config.php
  • 上面的文件定义了一个数组:

    /li>
  • config/bootstrap.php我放:Configure::load('my_config', 'default');

然后我如何在控制器中使用它?如果我把Configure::read('my_config.masterPath');它给出一个错误说:Class 'App\Controller\Configure' not found

如果我添加use Cake\Core\Configure;到控制器的顶部,则会清除错误,但返回值为null

0 投票
2 回答
396 浏览

cakephp - 如何使用 Cakephp 3.0 计算我的网页的唯一页面查看次数?

我正在尝试为我的网页实现总唯一页面查看次数,任何人都知道如何做到这一点只是给我一个使用 CakePHP 3.0 实现的想法

0 投票
2 回答
1368 浏览

php - cakephp3-哈希密码在比较时不匹配

CakePHP 版本:3.3.5

我正在构建一个简单的系统,用户可以使用该系统登录(使用电子邮件和密码),登录后他们可以更改密码。

为此,我正在使用DefaultPasswordHasher

我的数据库中已经有几个用户。他们的记录已经存在。因此,当我执行登录功能时,它起作用了。我将用户输入的密码与数据库中已经存在的密码进行了比较。检查成功,用户可以登录。

现在登录后,我写了更改密码功能,更新了用户密码。新的哈希字符串替换了旧的密码字符串,但是当我再次尝试登录时,登录失败。

我将在这里分享我的控制器。这是非常基本的。

谁能告诉我为什么密码不匹配。我是 CakePHP 框架的新手。提前致谢!

0 投票
1 回答
6544 浏览

php - 在 cakephp 3 中找不到类“路由器”

我正在将我的 cakephp 版本从 2.6.7 升级到 3.3.4。以下代码可以正常工作以引用主 URL:

但这在 cakephp 3.3.4 中不起作用,它显示以下错误消息:

我错过了哪个?提前致谢。

0 投票
1 回答
550 浏览

php - 如何访问 CakePHP 的 app.php 中的会话?

我正在使用 CakePHP 3.3

我正在尝试将 app.php 中的会话超时值和其他设置设置为存储在配置数据库表中的值。

我尝试使用下面的行,但它只是停止执行网页。

谁能告诉我如何在控制器和模型外访问会话,或者有没有办法在控制器的 app.php 中设置变量的值?

0 投票
2 回答
2423 浏览

cakephp - cakePHP 3.4 中的登录重定向

我正在尝试使用 cakephp 3.4 登录后重定向到当前页面,但我得到了这样的结果

本地主机页面不工作,本地主机页面重定向您太​​多次。尝试清除 cookie

2 秒后,它重定向到主页。请帮帮我。这是我的代码

在 appController.php

在 loginController.php