注意:试图获取非对象的 属性 'sys_id'
Notice: Trying to get property 'sys_id' of non-object
我的 symfony 项目有问题,我不明白。我尝试向函数添加关系,当我同步我的应用程序时出现此错误:“注意:尝试获取非对象的 属性 'sys_id'”。
我在我的 ResultSnowD 中将我的 $sys_id 设置为:
<?php
namespace App\Dto\Snow\Orga\Relation;
use App\Dto\Snow\Orga\ReferenceLinkSnowDto;
use Symfony\Component\Serializer\Annotation\SerializedName;
class RelationSnowDto
{
/**
* @var string
* @SerializedName("sys_id")
*/
public $sys_id;
/**
*
* @var ReferenceLinkSnowDto
*/
public $parent;
/**
*
* @var ReferenceLinkSnowDto
*/
public $type;
/**
*
* @var ReferenceLinkSnowDto
*/
public $child;
}
在我将我的关系与此函数同步后:
protected function synchronizeRelations()
{
$relation_list_raw = $this->snowTableApiClient->request('GET', 'cmdb_rel_ci', [
'query' => [
'sysparm_query' => 'type=60bc4e22c0a8010e01f074cbe6bd73c3^ORtype=1a9cb166f1571100a92eb60da2bce5c5^parent.sys_class_name=cmdb_ci_service^ORparent.sys_class_name=cmdb_ci_appl',
'sysparm_fields' => 'sys_id,parent,type,child',
'sysparm_limit' => 10
]
]);
$this->logger->info('Synchronize relations');
return $this->serializer->deserialize(
$relation_list_raw->getContent(),
RelationResultSnowDto::class,
'json'
);
}
然后,我在其他函数中调用我的 synchronizeRelations:
//
// Deal with relationships between business services and technical components
//
//
$servers = [];
$rels = $this->synchronizeRelations();
foreach ($rels as $rel) {
foreach ($outbound_relations as $outbound_relation) {
if ($rel->sys_id === $outbound_relation->sys_id) {
$servers[] = $this->businessServicesRelations($rel, $rels);
break;
}
}
}
我尝试转储 $rels,它起作用了,我有一个带有 sys_id 的数组,但是当我尝试在我的“if”之后转储 $rel 时,它 return 我什么都没有。
有人可以帮助我吗?
谢谢大家!
PS: 当我 var-dump $rels 时的结果
var_dump($rels)
当我 var_dump $outbound_relation 时的结果:
var_dump($outbound_relation)
这样解决问题:
$servers = [];
$rels = $this->synchronizeRelations();
foreach ($rels->relations as $rel) {
foreach ($outbound_relations as $outbound_relation) {
if ($rel->parent->value === $outbound_relation->sys_id) {
$servers[] = $this->businessServicesRelations($rel, $rels);
break;
}
}
}
谢谢El_Vanja!
我的 symfony 项目有问题,我不明白。我尝试向函数添加关系,当我同步我的应用程序时出现此错误:“注意:尝试获取非对象的 属性 'sys_id'”。 我在我的 ResultSnowD 中将我的 $sys_id 设置为:
<?php
namespace App\Dto\Snow\Orga\Relation;
use App\Dto\Snow\Orga\ReferenceLinkSnowDto;
use Symfony\Component\Serializer\Annotation\SerializedName;
class RelationSnowDto
{
/**
* @var string
* @SerializedName("sys_id")
*/
public $sys_id;
/**
*
* @var ReferenceLinkSnowDto
*/
public $parent;
/**
*
* @var ReferenceLinkSnowDto
*/
public $type;
/**
*
* @var ReferenceLinkSnowDto
*/
public $child;
}
在我将我的关系与此函数同步后:
protected function synchronizeRelations()
{
$relation_list_raw = $this->snowTableApiClient->request('GET', 'cmdb_rel_ci', [
'query' => [
'sysparm_query' => 'type=60bc4e22c0a8010e01f074cbe6bd73c3^ORtype=1a9cb166f1571100a92eb60da2bce5c5^parent.sys_class_name=cmdb_ci_service^ORparent.sys_class_name=cmdb_ci_appl',
'sysparm_fields' => 'sys_id,parent,type,child',
'sysparm_limit' => 10
]
]);
$this->logger->info('Synchronize relations');
return $this->serializer->deserialize(
$relation_list_raw->getContent(),
RelationResultSnowDto::class,
'json'
);
}
然后,我在其他函数中调用我的 synchronizeRelations:
//
// Deal with relationships between business services and technical components
//
//
$servers = [];
$rels = $this->synchronizeRelations();
foreach ($rels as $rel) {
foreach ($outbound_relations as $outbound_relation) {
if ($rel->sys_id === $outbound_relation->sys_id) {
$servers[] = $this->businessServicesRelations($rel, $rels);
break;
}
}
}
我尝试转储 $rels,它起作用了,我有一个带有 sys_id 的数组,但是当我尝试在我的“if”之后转储 $rel 时,它 return 我什么都没有。 有人可以帮助我吗? 谢谢大家!
PS: 当我 var-dump $rels 时的结果 var_dump($rels)
当我 var_dump $outbound_relation 时的结果: var_dump($outbound_relation)
这样解决问题:
$servers = [];
$rels = $this->synchronizeRelations();
foreach ($rels->relations as $rel) {
foreach ($outbound_relations as $outbound_relation) {
if ($rel->parent->value === $outbound_relation->sys_id) {
$servers[] = $this->businessServicesRelations($rel, $rels);
break;
}
}
}
谢谢El_Vanja!