Pregunta

Tengo una clase que es a través de datos de consulta de un cliente SOAP. los resultados de la consulta se devuelven como una matriz de objetos. Algo extraño está sucediendo. No estoy seguro de si sólo se produce cuando hay un elemento de la matriz.

Este es el código:

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;
}

cuando la aplicación se ejecute el var_dump ($ noteso) está muy bien. Imprime

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) 
} 

pero el segundo var_dump ($ nota-> ResourceID) en el bucle foreach sólo muestra

NULL

a continuación, cada línea que tiene acceso a la matriz después de que lanza un error:

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

Línea 204 bienestar

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

estado tratando de depurar éste por un tiempo, alguien puede ofrecer alguna sugerencia?

Saludos,

Jonesy

¿Fue útil?

Solución

Si no me equivoco, usted va de este por el camino equivocado. $noteso tiene una serie de propiedades, entre ellas ResourceID.

El foreach se está ejecutando a través de cada propiedad de ese objeto. Estas propiedades no tendrán un ResourceID propiedad llamada.

Parece que lo que debe hacer es dejar caer la foreach $noteso->ResourceID y dirección.

Otros consejos

parece $noteso = $result->queryResult->EntityResults->Entity; es devolver un solo objeto,

Tal vez un tiempo se necesita bucle, lo jabón-cliente está utilizando?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top