В настоящее время я разрабатываю Windows с WampServer
и Composer
работает (с OpenSSL
), а Propel установлен без проблем, и все работает нормально. Тем не менее, мой проект теперь должен использовать Equal Nest Behaviour
найденный здесь.
Я думал, что это позволит мне использовать поведение движения. В моем 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, но, поскольку это поведение равносильно самому себе, я просто позволяю этому делать свою работу.
Итак, какой правильный способ использовать поведение Propel с Composer, и если я делаю это правильно, почему я вижу ошибки выше?
Обновление
Я добавил эту строку в начало 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(
);