注意:试图获取非对象的 属性 '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!