问题标签 [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.
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
existing
FROM 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
existing
FROM 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
existing
FROM 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 列是评论表的外键。
mysql - CakePHP中复杂条件的ORM查询构建器
我有user_messages
列的表id, sender_id, receiver_id, message, deleted
我必须检索所有这样的消息
目前,我正在使用这个查询生成器
生成 sql 查询为
如何编写优化的 ORM 查询来检索上述数据?
编辑 2:更新了 arilia 答案的查询
unit-testing - 是否可以使用 IntegrationTestCase 来断言EventFired?
我正在从我的控制器触发一个事件,我想断言它是在IntegrationTestCase
. 我尝试使用该assertEventFired()
方法,但出现错误:
您断言的事件管理器未配置为跟踪事件。
我看不到如何让控制器实例$controller->eventManager()->setEventList(new EventList());
来启用事件跟踪。
是否可以使用 IntegrationTestCase 执行此操作,或者我是否需要像在核心测试套件中那样手动构建控制器Cake\Controller\Controller
?
蛋糕PHP 3.3.15
cakephp - CakePHP 3.3 表专用于基于所选语言的不同数据
我对 CakePHP 3.3 有一个非标准的问题。假设在我的数据库中,我有两个表:A
和B
(两者是相同的,第一个专用于第一种语言的数据,第二个专用于第二种语言的数据)。
我为表格正确编码了整个网站A
(表格B
尚未使用)。另外,我实现了.po
文件mechanizm来切换界面的语言。界面语言正确切换。
怎样才能轻松插表B
——我不想IF-ELSE
在所有情况下都发表声明,因为网站越来越大,表A中已经包含了很多操作。如果选择语言(通过文件),是否有可能以某种方式制作表A
等于表的简单映射?B
pl_PL
en_US
.po
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
:
cakephp - 如何使用 Cakephp 3.0 计算我的网页的唯一页面查看次数?
我正在尝试为我的网页实现总唯一页面查看次数,任何人都知道如何做到这一点只是给我一个使用 CakePHP 3.0 实现的想法
php - cakephp3-哈希密码在比较时不匹配
CakePHP 版本:3.3.5
我正在构建一个简单的系统,用户可以使用该系统登录(使用电子邮件和密码),登录后他们可以更改密码。
为此,我正在使用DefaultPasswordHasher
我的数据库中已经有几个用户。他们的记录已经存在。因此,当我执行登录功能时,它起作用了。我将用户输入的密码与数据库中已经存在的密码进行了比较。检查成功,用户可以登录。
现在登录后,我写了更改密码功能,更新了用户密码。新的哈希字符串替换了旧的密码字符串,但是当我再次尝试登录时,登录失败。
我将在这里分享我的控制器。这是非常基本的。
谁能告诉我为什么密码不匹配。我是 CakePHP 框架的新手。提前致谢!
php - 在 cakephp 3 中找不到类“路由器”
我正在将我的 cakephp 版本从 2.6.7 升级到 3.3.4。以下代码可以正常工作以引用主 URL:
但这在 cakephp 3.3.4 中不起作用,它显示以下错误消息:
我错过了哪个?提前致谢。
php - 如何访问 CakePHP 的 app.php 中的会话?
我正在使用 CakePHP 3.3
我正在尝试将 app.php 中的会话超时值和其他设置设置为存储在配置数据库表中的值。
我尝试使用下面的行,但它只是停止执行网页。
谁能告诉我如何在控制器和模型外访问会话,或者有没有办法在控制器的 app.php 中设置变量的值?
cakephp - cakePHP 3.4 中的登录重定向
我正在尝试使用 cakephp 3.4 登录后重定向到当前页面,但我得到了这样的结果
本地主机页面不工作,本地主机页面重定向您太多次。尝试清除 cookie
2 秒后,它重定向到主页。请帮帮我。这是我的代码
在 appController.php
在 loginController.php