【发布时间】:2012-10-03 16:02:03
【问题描述】:
我制作了一个肥皂客户端和服务器,并添加了一个示例类,该类返回通过方法找到的教义的结果。 但是,当我将其更改为持久化或刷新对象时,错误:
我的肥皂服务器:(肥皂控制器)
public function server()
{
if (is_null($this->getRequest()->getParam('wsdl'))) {
$server = new Zend_Soap_Server('http://localhost/soap?wsdl');
$server->setClass('Private\Library\Repo\Users');
$server->handle();
} else {
$wsdl = new Zend_Soap_AutoDiscover();
$wsdl->setClass('Private\Library\Repo\Users');
$wsdl->handle();
}
}
public function client()
{
$client = new Zend_Soap_Client('http://localhost/soap?wsdl');
$result = $client->updateUser();
}
当我打电话时,我得到:
消息:未知错误
堆栈跟踪:
#0 /library/Zend/Soap/Client.php(1121): SoapClient->__soapCall('updateUser', Array, NULL, NULL, Array)
在我的 updateDoc 课程中,我有一个标准的教义更新:
public function updateUser(){ $userEntity =
$this->em->getRepository("Application\Entities\Members")->findOneById(23);
$userEntity->first_name = "更新的名字";
$this->em->persist($userEntity); $this->em->flush(); }
但是,如果我打电话给我的getUser():
public function getUser()
{
$userEntity = $this->em->getRepository("Application\Entities\Members")->findOneById(23);
return $userEntity;
}
它没有肥皂未知错误..
随着更新,如果删除 $userEntity->first_name = "updated firstname";
它可以正常工作,没有任何错误,但很明显,它不会更新实体... 该实体也具有私有属性。不知道有没有影响
更新: 另外,我刚刚注意到,如果我使用与其当前值相同的值更新实体,它可以工作......例如lastname = 'alison' ,我更新 $entity->lastname = 'alison'... 它有效,但如果我将其更改为不同的姓氏,它不会.. 没有教义错误.. 还有,我可以在应用程序的任何控制器或模型中使用相同的功能更改此实体
【问题讨论】:
-
这与
Zend_Soap无关,而是与Doctrine2有关。 SOAP 客户端失败是因为服务器也失败了!您必须找到 Doctrine 错误(如果您需要帮助,请将其粘贴在这里!) -
不,因为这个名为“updateUsers”的函数在应用程序中的任何控制器中都可以工作......但是当从soap调用它时,它不会......
-
另外,我刚刚注意到,如果我使用与当前值相同的值更新实体,它可以工作......例如lastname = 'alison' ,我更新 $entity->lastname = 'alison'... 它有效,但如果我将其更改为不同的姓氏,它不会.. 没有教义错误.. 还有,我可以在应用程序的任何控制器或模型中使用相同的功能更改此实体
-
我有 tthis,我刚刚发现... PHP 警告:spl_object_hash() 期望参数 1 是对象,布尔值在 /private/library/Doctrine/ORM/UnitOfWork.php 第 2459 行和 PHP 警告:get_class() 期望参数 1 是对象,在第 2459 行的 /private/library/Doctrine/ORM/UnitOfWork.php 中给出布尔值
标签: zend-framework soap doctrine zend-soap