【发布时间】:2021-08-12 03:55:11
【问题描述】:
我有 2 个表,它们有很多关系:Users 和 Tests,这是一个使用 bake 生成的连接表,它关联了 TestsUsers。
在TestsUsers 中,我有两个名为score 和date 的额外字段(除了user_id 和test_id)。第一次添加记录时,我在TestsController 中手动制作实体(创建$test 实体,添加test.id、user.id 和user._joinData)并使用link() 保存数据。
我无法检索该记录以进行编辑。到目前为止,在索引视图中(显示所有记录并具有编辑和删除操作),我将 3 个参数传递给编辑函数:test_id、user_id 和 TestsUsers_id。
我用过:
$this->Tests->get(($test_id), [
'contain' => 'Users',
function ($q) use ($user_id) {
return $q->where(['Users.id' => $user_id])
}
]])
结果是:
test
(test info)
users
[0]
user_id=1
(user info)
_joinData
id=1
[1]
user_id=1
(user info)
_joinData
id=2
问题是,我如何访问get() 中的_joinData 级别以使用其ID。
附: = 我不允许加载或使用TestsUsers 模型。
谢谢
【问题讨论】:
-
“在get() 中访问_joinData 级别”是什么意思?在您从
get收到的数据中?或者你想以某种方式在你拨打 toget的电话中使用它? -
嗨,对不起,英语不是我的第一语言,我要说的是我如何访问那个 _joinData,这样我就可以将那里的 id (testsUsers_id) 与要编辑的记录的 id 进行比较(testsUsers_id)。我给控制器 3 个参数,user_id、test_id 和 testsUsers_id(_joinData),或者如何在不使用 TestsUsers 表的情况下从这 3 个表中获取()或查找()与这些参数匹配的记录,我只设法只使用 2 个参数
-
简而言之,我需要从连接表TestsUsers 中检索一条现有记录,使用用户的id、test 和testsUsers 作为参数。这将用于更新该记录
-
啊,您想要返回类似于您的测试数据所显示的内容,但只有一个用户记录的
_joinData与指定的ID 匹配?我实际上不知道该怎么做,但希望通过澄清有人能够提供帮助。 -
没错,谢谢
标签: cakephp associations cakephp-4.x