EntityManager クラスの triggerEvent メソッドが、提供された引数で array_shift を呼び出しているため、最近インストールした後、Louis-Philippe によって投稿されたソリューションが機能しないことに気付きました。したがって、これにより、コールバックは 5 つの必須パラメーターのうち 4 つしか受信しませんでした。
$em->registerEvent(HireVoice\Neo4j\EntityManager::RELATION_CREATE, function ($type, $relationName, $from, $to, $relation) {
// $relation is the Everyman\Neo4j\Relationship
if ($relationName === 'GOES_TO_MARKET') {
$relation->setProperty('foobar', 'baz')->save();
}
});
これは、以下を置き換えることで修正されました: (これは十分にテストされておらず、コードの他の部分に影響を与える可能性があることに注意してください。)
private function triggerEvent($eventName, $data)
{
if (isset($this->eventHandlers[$eventName])) {
$args = func_get_args();
array_shift($args);
foreach ($this->eventHandlers[$eventName] as $callback) {
$clone = $args;
call_user_func_array($callback, $clone);
}
}
}
に:
private function triggerEvent($eventName, $data)
{
if (isset($this->eventHandlers[$eventName])) {
$args = func_get_args();
foreach ($this->eventHandlers[$eventName] as $callback) {
$clone = $args;
call_user_func_array($callback, $clone);
}
}
}