gpt4 book ai didi

mysql - 对于这个 CakePHP 应用程序,我的模型关系应该是什么?

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

我无法弄清楚如何构建它。这是我的应用程序:

这是一个游戏网站...假设游戏是“单词搜索”、“数独”和“填字游戏”。

每个游戏都有很多谜题。所以有 100 种左右不同的单词搜索,100 种左右不同的 sodokus 等。

每个游戏也有很多模式。所以有 5 种左右的方法来进行每个单词搜索(定时、不定时等)、5 种玩数独的方法等。

每个游戏模式拼图组合都有很多高分。因此,如果您定时玩单词搜索#3,就会出现某个高分表。如果你玩同一个谜题但不计时,会出现不同的高分表,如果你玩#4 计时,会出现第三个高分表等。

最后每个高分有一个用户。

我最初的做法是每个游戏有很多谜题和模式,每个谜题有很多高分,每个高分有一个用户。正如您可能看到的那样,这没有多大意义,因为为什么高分属于谜题而不属于模式?当我显示积分时,我会显示Game->Puzzle->Highscore,并添加条件,即积分的模式=当前模式。没有理由我需要有条件,因为关系很清楚。

这就是我所拥有的:

Game->Puzzle->Highscore->User
->Mode

我意识到构建它的更好方法是 HABTM 与谜题和模式的关系。所以每个游戏都有很多 mode_puzzles,每个 mode_puzzle 有一个模式,一个谜题,和很多高分。

因此可以修改为:

Game (has many)->ModePuzzle (has many)->HighScore (has one)->User
(has one) -> Mode
(has one) -> Puzzle

问题在于,现在当我想为游戏添加新模式或为游戏添加新谜题时,我不得不处理这个我必须手动创建的繁琐的新表格,即使它 < em>应该可以在不创建全新表的情况下建立这种关系。对于每个游戏,任何模式都可以有任何谜题,那么为什么我必须手动创建此表?

人们建议使用 bake,但据我所知,bake 会自动生成模型,但我需要自动生成表格本身。

我觉得解决方案与连接或其他东西有关,但我在 MySQL 连接或 cakephp 如何处理它们或类似的东西方面没有经验。还有人建议说每个谜题都有很多模式,每个模式都有很多高分,但我不想这样做,因为每个谜题有很多模式或每个模式有很多谜题之间没有区别......我正在缓存整个结构,所以如果我必须为每个拼图重复每个模式,反之亦然,数组会变得很大。有人能解决这个问题吗?

最佳答案

您可能希望更好地熟悉模型 associations CakePHP 提供。这是我建议的解决方案:

class Game extends AppModel {
public $hasMany = array('Puzzle');
...
}
class Mode extends AppModel {
public $hasMany = array('Puzzle');
...
}
class Puzzle extends AppModel {
public $belongsTo = array('Game', 'Mode');
public $hasMany = array('HighScore');
...
}
class User extends AppModel {
public $hasMany = array('HighScore');
...
}
class HighScore extends AppModel {
public $belongsTo = array('Puzzle', 'User');
...
}

puzzles 表应该有两个外键,game_idmode_id。与high_scores表一样,它的外键应该是puzzle_iduser_id。我认为与模式和游戏相关的谜题组织非常明显,因为这些基本上是类别。高分表本质上是拼图和用户(许多用户玩很多游戏)之间的“拥有并属于许多”关系,带有一些额外信息,即他们的分数。

如果您勾勒出这些关系,这个解决方案似乎很明显,就像我在阅读您问题的前几行时所做的那样。

 Game  Mode
\ /
\/
Puzzle User
\ /
\/
HighScore

关于mysql - 对于这个 CakePHP 应用程序,我的模型关系应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16320717/

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