1

SOAPクライアントを介したクエリデータであるクラスがあります。クエリの結果は、オブジェクトの配列として返されます。何か奇妙なことが起こっています。配列に要素が1つある場合にのみ発生するかどうかはわかりません。

コードは次のとおりです。

function getNotes($ticketid){

    $ticketid = $this->ms_escape_string($ticketid);

    $conn = new Connections();
    $client = $conn->connectToAPI();

    $xml = array('sXML' =>"<queryxml>".
                                "<entity>TimeEntry</entity>".
                                "<query>".
                                    "<field>TicketID".
                                        "<expression op='equals'>$ticketid</expression>".
                                    "</field>".
                                "</query>".
                        "</queryxml>");

    $result = $client->query($xml);

    $noteso = $result->queryResult->EntityResults->Entity;

    //set array counter
    $x=0;


    var_dump($noteso);

        foreach($noteso as $note){

            var_dump($note->ResourceID);

            $name = $this->getResourceName($note->ResourceID);


            $timeentryarray[$x] = array('createdate'     => $note->CreateDateTime,
                            'summarynotes'  => $note->SummaryNotes,
                            'resource'    => $name
                           );
            $x++;

        }

        return $timeentryarray;
}

アプリケーションを実行するときは、var_dump($ noteso)で問題ありません。プリントアウト

object(stdClass)#12 (15) {
    ["id"]=> int(36988)
    ["UserDefinedFields"]=> object(stdClass)#13 (0) { } 
    ["TicketID"]=> int(26390) 
    ["InternalAllocationCodeID"]=> int(28303142) 
    ["Date"]=> string(19) "2010-10-25T00:00:00" 
    ["StartDateTime"]=> string(19) "2010-10-25T04:59:00" 
    ["EndDateTime"]=> string(19) "2010-10-25T05:04:00" 
    ["HoursWorked"]=> float(0.08)
    ["HoursToBill"]=> float(0.0833333358) 
    ["OffsetHours"]=> float(0)
    ["SummaryNotes"]=> string(69) "Hi Sarah, Do you have an example of a bounced email? Regards Simon" 
    ["InternalNotes"]=> string(0) "" 
    ["RoleID"]=> int(24482927) 
    ["CreateDateTime"]=> string(23) "2010-10-25T05:06:28.023" 
    ["ResourceID"]=> int(29699970) 
} 

ただし、foreachループの2番目のvar_dump($ note-> ResourceID)には、

NULL

その後、配列にアクセスする各行はエラーをスローします。

Notice: Trying to get property of non-object in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ClientPortal\classes\OpenTickets.php on line 204

行204は

$name = $this->getResourceName($note->ResourceID);

しばらくの間これをデバッグしようとしていますが、誰かが何か提案をすることができますか?

よろしく、

ジョーニー

4

2 に答える 2

2

私が間違っていなければ、あなたはこれを間違った方法で行っています。$noteso中にはいくつかのプロパティがありますResourceID

は、そのオブジェクトのすべてのプロパティforeachを実行しています。これらのプロパティには、という名前のプロパティはありません。ResourceID

foreachとアドレスを削除する必要があるようです$noteso->ResourceID

于 2010-10-25T11:19:56.597 に答える
1

$noteso = $result->queryResult->EntityResults->Entity;単一のオブジェクトを返すように見えますが、

たぶんwhileループが必要ですが、どのsoap-clientを使用していますか?

于 2010-10-25T11:21:03.137 に答える