从 Orator 迁移到 Masonite ORM

未匹配的标注

Orator 到 Masonite ORM

Orator 到 Masonite ORM 指南

本指南将解释如何从 Orator 迁移到 Masonite ORM。 Masonite ORM 几乎是 Orator 的直接端口,但允许 Masonite 组织完全创造性地控制 ORM。

Orator 已被放弃,Masonite 需要一个好的 ORM 来保持 ORM 的最新功能和安全性。

在将您的项目转移到 Masonite ORM 之前,请记住某些功能不是 (_至少目前)_ 从 Orator 移植过来的。这些是将来可能移植的功能。

此列表是一个不断发展的功能列表,我们开发的任何内容都将从列表中删除。这些功能已计划但尚未完成。

目前这些功能是:

  • 有一个直通关系

如果您使用的是 Masonite 2,那么由于 Masonite 和 Masonite 2 ORM 之间的版本冲突,您将无法升级到 Masonite ORM。

配置

Orator 和 Masonite ORM 之间的配置字典是相同的。唯一的区别是 Masonite ORM 需要config/database.py文件,而 Orator 是可选的,需要在命令等多个位置显式指定。

如果您已经来自 Masonite,请不要担心,该文件已经存在。如果没有,您将需要创建这个config/database.py文件。

这是 Masonite ORM 配置字典的示例:

import os

DATABASES = {
    'default': 'mysql',
    'mysql': {
        'driver': 'mysql',
        'host': os.getenv('MYSQL_DATABASE_HOST'),
        'user': os.getenv('MYSQL_DATABASE_USER'),
        'password': os.getenv('MYSQL_DATABASE_PASSWORD'),
        'database': os.getenv('MYSQL_DATABASE_DATABASE'),
        'port': os.getenv('MYSQL_DATABASE_PORT'),
        'prefix': '',
        'options': {
            'charset': 'utf8mb4',
        },
        'log_queries': True
    },
    'postgres': {
        'driver': 'postgres',
        'host': os.getenv('POSTGRES_DATABASE_HOST'),
        'user': os.getenv('POSTGRES_DATABASE_USER'),
        'password': os.getenv('POSTGRES_DATABASE_PASSWORD'),
        'database': os.getenv('POSTGRES_DATABASE_DATABASE'),
        'port': os.getenv('POSTGRES_DATABASE_PORT'),
        'prefix': '',
        'log_queries': True
    },
    'sqlite': {
        'driver': 'sqlite',
        'database': 'orm.sqlite3',
        'prefix': '',
        'log_queries': True
    },
    'mssql': {
        'driver': 'mssql',
        'host': os.getenv('MSSQL_DATABASE_HOST'),
        'user': os.getenv('MSSQL_DATABASE_USER'),
        'password': os.getenv('MSSQL_DATABASE_PASSWORD'),
        'database': os.getenv('MSSQL_DATABASE_DATABASE'),
        'port': os.getenv('MSSQL_DATABASE_PORT'),
        'prefix': '',
        'log_queries': True
    },
}

您需要做的另一件事是更改解析器类。 Orator 的配置结构如下:

from orator import DatabaseManager, Model

DATABASES = {
  # ...
}

DB = DatabaseManager(DATABASES)
Model.set_connection_resolver(DB)

Masonite ORM 那些相同的解析器类如下所示:

from masoniteorm.connections import ConnectionResolver

DATABASES = {
  # ...
}

DB = ConnectionResolver().set_connection_details(DATABASES)

模型

模型是相同的,但是导入是不同的。Orator 要求您从配置文件中设置模型解析器,然后导入该模型。

在 Masonite ORM 中,您可以直接导入模型:

# Masonite
from masoniteorm.models import Model

class User(Model):
    pass

Scopes

这里注意 scope 的导入,也是不一样的

# Orator
from orator.orm import scope

class User(Model):

  @scope
  def popular(self, query):
        return query.where('votes', '>', 100)
# Masonite
from masoniteorm.scopes import scope

class User(Model):

  @scope
  def popular(self, query):
        return query.where('votes', '>', 100)

获取构建器关系

在 Orator 中,您可以这样做:

user = User.find(1)
user.phone().where('active', 1).get()

这将延迟关系调用,而是在返回结果之前附加构建器。

Masonite ORM 中的上述调用变为:

user = User.find(1)
user.related('phone').where('active', 1).get()

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/masonite/4.0/or...

译文地址:https://learnku.com/docs/masonite/4.0/or...

上一篇 下一篇
贡献者:4
讨论数量: 0
发起讨论 只看当前版本


暂无话题~