我目前正在使用 Windows 进行开发,WampServer
并且Composer
正在使用(使用OpenSSL
),Propel 安装没有问题,一切似乎都运行良好。但是,我的项目现在需要使用Equal Nest Behaviour
found here。
我认为这将允许我使用推进行为。在我的schema.xml
我有以下片段:
<table name="friend">
<behavior name="equal_nest">
<parameter name="parent_table" value="user" />
</behavior>
</table>
但是当我运行时,propel-gen sql
我得到了错误:
[phingcall] Unknown behavior "equal_nest"; make sure you configured the propel.be
havior.equal_nest.class setting in your build.properties
文档说:
然后,如果您在应用程序中不使用 Composer 或自动加载器,请将以下配置添加到您的 build.properties 或 propel.ini 文件中:
让我假设我不必放入 build.properties 文件。但是,将其放入会给我以下错误:
PHP Fatal error: Class 'EqualNestParentBehavior' not found in C:\home\movesleag
ue.com\vendor\craftyshadow\propel-equalnest-behavior\src\EqualNestBehavior.php o
n line 74
我不确定这是否与自动加载不起作用或命名空间有关(我的架构有一个命名空间,但在删除它时我也会遇到同样的错误)。
我的composer.json
文件如下所示:
{
"require": {
"craftyshadow/propel-equalnest-behavior": "dev-master"
}
}
注意:我确实在那里有 Propel,但由于最平等的行为本身需要它,我只是让它完成它的工作。
那么,在 Composer 中使用 Propel 行为的正确方法是什么,如果我做得对,为什么会看到上面的错误?
更新
我将此行添加到顶部EqualNestBehaviour.php
:
include __DIR__ . DIRECTORY_SEPARATOR . 'EqualNestParentBehavior.php';
并且 SQL 似乎可以正确生成而没有错误。但是,更改该文件对我来说似乎并不聪明!会不会是自动加载的问题?你能想到我能做些什么来测试吗?
我可以确认Equal Nest Behaviour
在我的实际Propel
代码中使用可以正常工作,使用类似的功能addFriends()
- 这是上面的更改仍然存在。
在我的autoload_namespaces.php
文件中,我有以下内容:
<?php
// autoload_namespaces.php generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);