小编RMK*_*147的帖子

关系数据库设计到mongoDB/mongoose设计

我最近开始使用mongoDB和mongoose作为我的新node.js应用程序.在我努力适应mongoDB/noSQL思维方式(例如非规范化和缺乏外键关系)之前,只使用了关系数据库.我有这个关系数据库设计:

**Users Table**

user_id
username
email
password

**Games Table**

game_id
game_name

**Lobbies Table**

lobby_id
game_id
lobby_name

**Scores Table**

user_id
game_id
score
Run Code Online (Sandbox Code Playgroud)

因此,每个大厅属于一个游戏,多个大厅可以属于同一个游戏.用户对于不同的游戏也有不同的分数.到目前为止,对于我的用户架构,我有以下内容:

var UserSchema = new mongoose.Schema({
    username: {
        type: String,
        index: true,
        required: true,
        unique: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    }
});
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何将关系设计结构化为mongoDB/mongoose模式?谢谢!


编辑1

我现在尝试创建所有模式,但我不知道这是否是正确的方法.

var UserSchema = new mongoose.Schema({
    _id: Number,
    username: {
        type: String,
        index: true,
        required: true,
        unique: true
    },
    email: {
        type: String,
        required: true …
Run Code Online (Sandbox Code Playgroud)

javascript database-design mongoose mongodb node.js

6
推荐指数
3
解决办法
6341
查看次数

Laravel 5表单请求属性不能使用自定义验证器的好名称

在我的一个表单请求中,我有以下代码更改验证消息的输入字段的名称:

   public function attributes(){

        return [
            'title' => 'topic title',
            'content' => 'post content'
        ];

    }
Run Code Online (Sandbox Code Playgroud)

现在我想添加自定义验证规则,因此我创建了一个自定义验证服务:

class Validation extends Validator{

    public function validateFoo($attribute, $value, $parameters){

        return $value == 'foo';

    }

}
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个验证服务提供程序并添加了此引导方法:

public function boot(){

    Validator::resolver(function($translator, $data, $rules, $messages)
    {
        return new Validation($translator, $data, $rules, $messages);
    });

}
Run Code Online (Sandbox Code Playgroud)

然后我将它添加到app/config/app.php中的providers数组中:

  'App\Providers\ValidationServiceProvider',
Run Code Online (Sandbox Code Playgroud)

现在这一切都运行良好,我可以按预期在表单请求中使用我的自定义验证规则.问题是我为之前的属性设置的好名称还原为旧名称,因此不需要像"帖子标题字段是必需的"那样.我得到'标题字段是必需的'.如果我从providers数组中删除上面的条目,那么我得到了预期的好名字,但后来我不能使用我的自定义验证规则.我知道我可以在语言文件中全局看到这些,但我宁愿这样做.有没有什么办法解决这一问题?谢谢!

UPDATE

如果我只是将以下代码添加到AppServiceProvider类中,而不是执行上述操作,那么我会得到预期的属性名称,但我更喜欢第一种方式,因为它更干净:

public function boot()
{
    \Validator::extend('foo', function($attribute, $value, $parameters)
    {
        return $value == 'foo';
    });
}
Run Code Online (Sandbox Code Playgroud)

validation request laravel laravel-5 laravel-validation

2
推荐指数
1
解决办法
3798
查看次数

Laravel 通过另一张表雄辩关系

我有以下数据库表:

季节

  • ID
  • 数字

团队

  • ID
  • 姓名

积分榜

  • ID
  • season_id
  • 团队 ID

问题是,我怎样才能让一个赛季的所有球队都进入积分榜。目前我对所有团队都是这样的:

$teams = [];

$standings = $season->standings;

foreach($standings as $standing){

     $teams[] = $standing->team;

}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 Eloquent 关系来做到这一点?我尝试过 HasManyThrough 但没有成功。这些是我的模型目前的样子:

class Season extends Eloquent{

    public function standings(){

        return $this->hasMany('Standing');

    }

}

class Standing extends Eloquent{

    public function team(){

        return $this->belongsTo('Team');

    }

}

class Team extends Eloquent{

    public function standings(){

        return $this->belongsToMany('Standing');

    }

}
Run Code Online (Sandbox Code Playgroud)

orm laravel eloquent laravel-4 laravel-5

1
推荐指数
1
解决办法
7255
查看次数