gpt4 book ai didi

mysql - cakephp 将查询翻译为 cakephp 模型查询

转载 作者:行者123 更新时间:2023-11-29 14:02:58 26 4
gpt4 key购买 nike

我有 2 个模型 Scale 和 Step,其中模型 Scale 有很多 Step。数据库表是:

scale : id | name | s1 | s2 | s3 | s4 | s5 | s6 | s7
step : id | val

我想在cakephp结构中编写以下查询...

select s.id, s1.val as v1, s2.val as v2, s3.val as v3, s4.val as v4, s5.val as v5, s6.val as v6, s7.val as v7
from scale s
join step s1 on s.s1 = s1.id
join step s2 on s.s2 = s2.id
join step s3 on s.s3 = s3.id
join step s4 on s.s4 = s4.id
join step s5 on s.s5 = s5.id
join step s6 on s.s6 = s6.id
join step s7 on s.s7 = s7.id

你能帮我看看语法吗?

最佳答案

我建议您更改数据库结构。而不是在 Scale 中将 Step 绑定(bind)到 s1、s2、s3...等,这有一些缺点,其中之一是它限制每个 Scale 只能执行 7 个步骤,并且实际上并不是一个好的关系数据库模型,我建议您创建第三个表,名为 ScaleSteps 之类的表,并具有三列:

id | ScaleId | StepId

假设您有一个 id 为 7 的 Scale 条目,并且该 Scale 具有与其关联的步骤条目 1、2 和 3,则结果表将如下所示:

id | ScaleId | StepId
1 | 7 | 1
1 | 7 | 2
1 | 7 | 3

然后使用 hasOne、belongsTo...等设置 CakePHP 模型关系,例如:

class Scale extends Model {
var $name = "Scale";
var $hasMany = "ScaleStep";
}

class ScaleStep extends Model {
var $name = "ScaleStep";
var $belongsTo = "Step";
}

关于mysql - cakephp 将查询翻译为 cakephp 模型查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14789313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com