Привет! Я использую проект PHP Symfony и пытаюсь использовать сгенерированный класс peer-класса для выполнения запроса.
Модель сгенерировала метод "doSelectJoinMeetingItems", который должен присоединить мою таблицу действий собрания к моей таблице элементов собрания (см. Цитату сгенерированного кода ниже).
Однако при использовании этого метода я получаю следующую ошибку: Warning: Missing argument 1 for sfComponent::__construct(),
- см. Полностью ниже.
Кто-нибудь знает, почему это происходит? Все, что я делаю, это использую собственные сгенерированные методы Symfonys, чтобы попытаться передать мне данные через мой ORM!
Спасибо за ваше время,
Мой код:
Inside MeetingMeetingsPeer
return self::doSelectJoinMeetingItems(new Criteria());
Автоматически сгенерированный baseMeetingActionsPeer
public static function doSelectJoinMeetingItems(Criteria $criteria, $con = null, $join_behavior = Criteria::LEFT_JOIN)
{
$criteria = clone $criteria;
// Set the correct dbName if it has not been overridden
if ($criteria->getDbName() == Propel::getDefaultDB()) {
$criteria->setDbName(self::DATABASE_NAME);
}
MeetingActionsPeer::addSelectColumns($criteria);
$startcol = (MeetingActionsPeer::NUM_COLUMNS - MeetingActionsPeer::NUM_LAZY_LOAD_COLUMNS);
MeetingItemsPeer::addSelectColumns($criteria);
$criteria->addJoin(MeetingActionsPeer::ITEM_ID, MeetingItemsPeer::ID, $join_behavior);
// symfony_behaviors behavior
foreach (sfMixer::getCallables(self::getMixerPreSelectHook(__FUNCTION__)) as $sf_hook)
{
call_user_func($sf_hook, 'BaseMeetingActionsPeer', $criteria, $con);
}
$stmt = BasePeer::doSelect($criteria, $con);
$results = array();
while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
$key1 = MeetingActionsPeer::getPrimaryKeyHashFromRow($row, 0);
if (null !== ($obj1 = MeetingActionsPeer::getInstanceFromPool($key1))) {
// We no longer rehydrate the object, since this can cause data loss.
// See http://propel.phpdb.org/trac/ticket/509
// $obj1->hydrate($row, 0, true); // rehydrate
} else {
$cls = MeetingActionsPeer::getOMClass(false);
$obj1 = new $cls();
$obj1->hydrate($row);
MeetingActionsPeer::addInstanceToPool($obj1, $key1);
} // if $obj1 already loaded
$key2 = MeetingItemsPeer::getPrimaryKeyHashFromRow($row, $startcol);
if ($key2 !== null) {
$obj2 = MeetingItemsPeer::getInstanceFromPool($key2);
if (!$obj2) {
$cls = MeetingItemsPeer::getOMClass(false);
$obj2 = new $cls();
$obj2->hydrate($row, $startcol);
MeetingItemsPeer::addInstanceToPool($obj2, $key2);
} // if obj2 already loaded
// Add the $obj1 (MeetingActions) to $obj2 (MeetingItems)
$obj2->addMeetingActions($obj1);
} // if joined row was not null
$results[] = $obj1;
}
$stmt->closeCursor();
return $results;
}
Ошибка в полном объеме
Warning: Missing argument 1 for sfComponent::__construct(), called in /var/www/html/dev/meeting/lib/model/om/BaseMeetingActionsPeer.php on line 584 and defined in /var/www/html/dev/meeting/lib/vendor/symfony/lib/action/sfComponent.class.php on line 36
Warning: Missing argument 2 for sfComponent::__construct(), called in /var/www/html/dev/meeting/lib/model/om/BaseMeetingActionsPeer.php on line 584 and defined in /var/www/html/dev/meeting/lib/vendor/symfony/lib/action/sfComponent.class.php on line 36
Warning: Missing argument 3 for sfComponent::__construct(), called in /var/www/html/dev/meeting/lib/model/om/BaseMeetingActionsPeer.php on line 584 and defined in /var/www/html/dev/meeting/lib/vendor/symfony/lib/action/sfComponent.class.php on line 36
Notice: Undefined variable: context in /var/www/html/dev/meeting/lib/vendor/symfony/lib/action/sfComponent.class.php on line 38
Fatal error: Call to a member function getEventDispatcher() on a non-object in /var/www/html/dev/meeting/lib/vendor/symfony/lib/action/sfComponent.class.php on line 55
Строки с 582 по 586 следующие:
582 $cls = MeetingActionsPeer::getOMClass(false);
583
584 $obj1 = new $cls();
585 $obj1->hydrate($row);
586 MeetingActionsPeer::addInstanceToPool($obj1, $key1);
Строка 36 из sfComponnent.class.php
36 public function __construct($context, $moduleName, $actionName)
37 {
38 $this->initialize($context, $moduleName, $actionName);
39 }