运行 Doctrine 转换映射时跳过表

2024-08-15php开发问题
0

本文介绍了运行 Doctrine 转换映射时跳过表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我第一次坐下来学习教义,并尝试在现有站点/数据库上使用它的一些命令行工具.我从命令行使用映射和实体逆向工程工具,想看看它会从 php/mysql 中的现有网站生成什么样的文件.

I'm sitting down with doctrine for the first time and trying to use some of it's command line tools on an existing site/database. I've played with the mapping and entity reverse-engineering tools from the command line and wanted to see what kind of files it would generate from an existing website in php/mysql.

但是,它会在任何异常情况下停止.我已经能够为枚举创建一个类型映射,以便暂时将它们扔到一个字符串中,但现在它阻止了我在没有指定主 ID 键的表上.我对在链接表中使用主键或复合键的讲座不感兴趣,我只是想在学习 Doctrine 的同时生成一些输出.

However, it stops on any Exceptions. I was already able to create a type mapping for enum to just throw them to a string for now, but now it's stopping me on tables that do not have a primary ID key specified. I'm not interested in a lecture on using primary keys or compound keys in link tables, I'm just trying to generate some output while learning Doctrine at the moment.

有没有办法告诉教义跳过抛出异常的表,或者在遇到异常时不停止直通?我现在只想要一些示例输出,不想完全重构复杂的数据库只是为了看看 Doctrine 能做什么.

Is there a way to either tell doctrine to skip tables that are throwing exceptions or to barrel through without stopping when it hits them? I just want some sample output at the moment and don't want to entirely re-factor a complex database just to see what Doctrine can do.

SW

推荐答案

再次重温同样的问题.我发现似乎可行的是通过引导文件在 cli 配置中使用过滤:

Revisiting this same issue again. What I found that seems to work was using filtering in the cli configuration via the bootstrap file:

// bootstrap.php
require_once("vendor/autoload.php");

use DoctrineORMToolsSetup;
use DoctrineORMEntityManager;

$site_root = realpath(__DIR__ . "/../");

$paths = [ $site_root . "/libraries/Doctrine/Entities" ];
$isDevMode = false;

// used when building entities from database using command line tool
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);

$filter_include = [
    'some_table_name',
    'another_table_name',
    '.*some_sub_portion.*',
    '^some_table_prefix_.*',
    '.*some_table_suffix$'
];
$include_reg = '/^(' . implode('|', $filter_include) . ').*$/';

$filter_exclude = [
    // tables with no primary key generate exceptions
    'some_table_name',
    'another_table_name',
    '.*some_sub_portion.*',
    '^some_table_prefix_.*',
    '.*some_table_suffix$'
];
$exclude_reg = '/^(?!(?:' . implode('|', $filter_exclude) . ')$).*$/';

// use include list
//$config->setFilterSchemaAssetsExpression($include_reg);
// use exclude list
$config->setFilterSchemaAssetsExpression($exclude_reg);

// the connection configuration
$dbParams = array(
    'driver'   => 'pdo_mysql',
    'user'     => 'myuser',
    'password' => 'mypassword',
    'dbname'   => 'mydatabase',
);

$entityManager = EntityManager::create($dbParams, $config);

$platform = $entityManager->getConnection()->getDatabasePlatform();
$platform->registerDoctrineTypeMapping('enum', 'string');

这篇关于运行 Doctrine 转换映射时跳过表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

PHP实现DeepL翻译API调用
DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以...
2025-08-20 php开发问题
168

PHP通过phpspreadsheet导入Excel日期数据处理方法
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的...
2024-10-23 php开发问题
287

mediatemple - 无法使用 codeigniter 发送电子邮件
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)...
2024-08-23 php开发问题
11

Laravel Gmail 配置错误
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)...
2024-08-23 php开发问题
16

将 PHPMailer 用于 SMTP 的问题
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)...
2024-08-23 php开发问题
4

关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)...
2024-08-23 php开发问题
17