小编Col*_*ine的帖子

如何编写可以将数据重新分配到新表的Doctrine迁移

我有一个数据库(实际上是在Symfony1应用程序中使用Propel创建的).我在Symfony2和Doctrine中重新实现它,但我也想借此机会在某种程度上重构数据库.

我已经定义了一组Doctrine Entities并运行了doctrine:migrations:diff,它创建了一个基本的Migration来添加表,列和约束,并删除一堆列.

但是,在删除这些列之前,我想将数据复制到一些新表中,然后将这些表中的新记录链接到第一个表中的新列.我不相信在纯SQL中可以这样做(通常,一个表的内容分布在三个或四个表中).

给了我一个提示,并让我找到了这个(我已经跳过了,因为我不知道"容器"与我的问题有什么相关性).

但是我在Symfony或Doctrine文档中没有找到的是在迁移中实际移动数据的一个例子 - 对我来说这似乎是迁移的核心目的之一!

我可以使用上面那些链接中的提示,但后来我不知道如何继续.我没有(并且真的不想花时间创建,虽然我确定我能做到)现有数据库模式的Doctrine实体:我可以使用DQL吗?我根本就不知道.

所以有两个问题:

  1. 有人能给我一个在表之间移动数据的Doctrine迁移的例子吗?

  2. 或者,任何人都可以澄清DQL的语法如何依赖于Doctrine中实体的定义?我可以使用它来指定不在实体定义中的列吗?

php symfony doctrine-orm doctrine-migrations

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

如何调查"尝试释放未引用的标量"

Perl脚本(使用大量本地编写的模块,并且正在积极开发中)刚刚开始生成零星的

"尝试释放未引用的标量:SV 0xa6e685c,Perl解释器:0x96d9008在全局销毁期间."

消息.这总是可重复的,因为特定的命令序列总是产生消息,但是我没有设法隔离出一个简单的或独立的案例来引发它.特别是,从Perl调试器运行脚本时我还没有看到它(我可以在调试使用IPC :: Open3运行目标脚本的脚本时得到它.)

我意识到这可能只是Perl中的一个错误,但更有可能是我正在做的事情,很可能是我对SVN :: Client的调用; 但我很难找到一种方法来调查它,我想知道是否有人有任何指针.

Perl 5.10.0; 各种版本的Fedora Linux.我将在Perl 5.12上尝试它,但除非它也在那里出现,否则它对我没有帮助. 编辑:在5.12中可靠地给出消息的特定情况不在5.12中.不幸的是,这并没有真正告诉我什么.

debugging perl

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

为了测试目的,我如何防止Perl使用模块?

我正在开发一套Perl脚本和模块,然后部署在我们公司的不同机器和系统上.某些设施依赖于可能安装或不安装在不同机器上的特定模块.我使用'eval'来检测这个模块是否可用.

我刚刚收到一个故障报告,结果是用户没有在他的机器上成功安装模块(但没有意识到他没有):但我的代码中的错误是我没有在这种情况下,将错误条件传递到顶层,因此它会丢失,并且脚本只是默默地无法执行其部分功能.

为了研究它,我禁用了我的机器上的特定模块,并轻松找到并修复了问题.但是,除了卸载它之外,我能想到禁用它的唯一方法就是重命名文件(当然,我必须通过sudo来完成).

我现在正在运行我的所有测试,这个模块不可用,并且它已经抛出了一些我没有正确处理这种情况的地方.

但我现在要做的是为这种情况编写一些测试:但是如何在自动测试中明智地使该模块暂时不可用.我真的不希望我的测试使用sudo来移动模块(我可能在同一时间在机器上做其他事情).

有没有人知道我可以告诉Perl的方法"无论我试图'使用'还是'要求'它出于测试目的,都找不到这个模块"?

我正在运行Perl 5.10.0(在Fedora 12上),并使用Test :: More和TAP :: Harness.我们的一些安装正在运行Perl 5.8,因此我愿意在测试中使用5.10功能,但不在代码本身中使用.

testing perl

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

如何测试Tcl/Tk脚本?

我们有一些Tcl/Tk脚本(因为我们使用的GUI只能在Tcl中包含宏).我刚刚修改了其中一个,并想测试它.

我们使用Test :: More来测试Perl模块,并且已经将Selenium用于网页,但是我们从来没有为我们的Tcl/Tk脚本提供任何类型的自动测试装备.

我试过搜索,但由于Tcl最初的目的是进行测试,我发现很难理清是否有关于测试Tcl/Tk本身的命中.

有没有人知道一个让我运行Tcl/Tk脚本并测试其用户交互以及最终操作的程序?

testing tcl

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

如何创建一个对象,其创建属性隐式指定派生类?

我正在寻找以下模式.(我在Perl工作,但我不认为语言特别重要).

父母班Foo,儿童Bar,Baz,Bazza.

构造Foo的方法之一是解析字符串,该字符串的一部分将隐式指定要创建的类.因此,例如,如果它开始'http:'那么它是一个Bar,但如果它没有,但它包含'[Date]',那么Baz喜欢它,依此类推.

现在,如果Foo知道它的所有子节点,以及什么字符串是Bar,什么是Baz等,它可以调用适当的构造函数.但基类不应该对其子女有任何了解.

我想要的是Foo的构造函数能够依次尝试它的孩子,直到其中一个人说"是的,这是我的,我会创造的东西".

我意识到在一般情况下这个问题没有明确定义,因为可能有多个子接受字符串,因此调用它们的顺序很重要:忽略它并假设字符串的特征这样只有一个子类会喜欢这个字符串.

我提出的最好的方法是让子类在初始化时"注册"基类,以便获取构造函数列表,然后循环它们.但是,我有一个更好的方法吗?

示例代码:

package Foo;

my @children;

sub _registerChild
{
  push @children, shift();
}

sub newFromString
{
  my $string = shift;
  foreach (@children) {
    my $object = $_->newFromString(@_) and return $object;
  }
  return undef;
}

package Bar;
our @ISA = ('Foo');

Foo::_registerChild(__PACKAGE__);

sub newFromString
{
  my $string = shift;
  if ($string =~ /^http:/i) {
    return bless(...);
  }
  return undef;
}
Run Code Online (Sandbox Code Playgroud)

perl inheritance constructor design-patterns creation

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

没有功能参数的不显眼的javascript

如果你有

<div id="data" onclick="handleData(1)">Datum 1</div>
Run Code Online (Sandbox Code Playgroud)

而你想要晚绑定:

<div id="data">Datum 1</div>
<script>
    $("#data").click(function() {
        handleData(1);
    })
</script>
Run Code Online (Sandbox Code Playgroud)

你如何传递参数1?你必须做这样的事情:

<div id="data" data="1">Datum 1</div>
<script>
    $("#data").click(function() {
        handleData($(this).attr("data"););
    })
</script>
Run Code Online (Sandbox Code Playgroud)

javascript jquery unobtrusive-javascript

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