php typo3中国外数据库的ORM模型

mwkjh3gx  于 2022-12-17  发布在  PHP
关注(0)|答案(1)|浏览(124)

我正在编写一个typo 3插件,需要访问一个可配置的MySQL / MariaDB数据库服务器上的预定义结构的数据库表。

<?php

namespace Homeinfo\SysMon2\Domain\Model;

use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;

class CheckResults extends AbstractEntity
{
    /**
     * @var int $id
     */
    public $id;

    /**
     * @var DateTime $timestamp
     */
    public $timestamp;

    /**
     * @var int $system
     */
    public $system;

    /**
     * @var bool $icmp_request 
     */
    public $icmp_request;

    /**
     * @var string $ssh_login  
     */
    public $ssh_login ;

    /**
     * @var string $http_request 
     */
    public $http_request;

    /**
     * @var string $application_state 
     */
    public $application_state;

    /**
     * @var string $smart_check 
     */
    public $smart_check;

    /**
     * @var string $baytrail_freeze 
     */
    public $baytrail_freeze;

    /**
     * @var string $fsck_repair 
     */
    public $fsck_repair;

    /**
     * @var bool $application_version 
     */
    public $application_version;

    /**
     * @var int $ram_total 
     */
    public $ram_total;

    /**
     * @var int $ram_free 
     */
    public $ram_free;

    /**
     * @var int $ram_available 
     */
    public $ram_available;

    /**
     * @var string $efi_mount_ok 
     */
    public $efi_mount_ok;

    /**
     * @var int $download 
     */
    public $download;

    /**
     * @var int $upload 
     */
    public $upload;

    /**
     * @var string $root_not_ro 
     */
    public $root_not_ro;

    /**
     * @var string $sensors 
     */
    public $sensors;

    /**
     * @var bool $in_sync 
     */
    public $in_sync;

    /**
     * @var int $recent_touch_events 
     */
    public $recent_touch_events;

    /**
     * @var DateTime $offline_since 
     */
    public $offline_since;

    /**
     * @var DateTime $blackscreen_since 
     */
    public $blackscreen_since;
}

当然,这并不能像现在这样工作,因为Typo 3假设模型表示 local typo 3数据库中由ext_tables.{php,sql}定义的表,但是我希望typo 3从另一个可配置的数据库服务器使用这个模型,该服务器由

  • 主机名
  • 港口
  • 用户名
  • 密码

我该如何着手呢?我希望使用尽可能多的高级抽象,而不希望使用mysqli或类似的方法编写裸SQL查询。

ttygqcqt

ttygqcqt1#

您可以将多个数据库附加到TYPO3,并为应使用此特殊新数据库的表建立Map,https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/Configuration/Typo3ConfVars/DB.html#tablemapping有关您的特定版本(但此处提到的示例),请参阅www.example.com

'Connections' => [
  'Default' => [
    // ...
  ],
  'Syslog' => [
    'charset' => 'utf8mb4',
    'driver' => 'mysqli',
    'dbname' => 'syslog_dbname',
    'host' => 'syslog_host',
    'password' => '***',
    'port' => 3306,
    'user' => 'syslog_user',
  ],
],
'TableMapping' => [
  'sys_log' => 'Syslog',
]

应该会让您有一个很好的了解。根据您的用例,它可能有助于
1.对该数据库具有只读SQL访问权限,以便破坏性数据库比较不会使外部系统失效。
1.或者有一些额外的TYPO3友好的字段(例如uid,pid),帮助实现你想要的。

相关问题