Skip to main content

Procurando por Registros

Os exemplos a seguir mostram como procurar registros usando uma classe de beans. Os exemplos fornecidos assumem que um registro de conta está disponível com nomes $accountBean. Isso pode ter sido recuperado usando a chamada getBean mencionada na seção BeanFactory, por exemplo.

Exemplo 3.4: Recuperando um bean de conta não preenchido
$accountBean = BeanFactory::getBean('Accounts');

get_list 

O método get_list permite obter uma lista de beans correspondentes e permite paginar os resultados.

Exemplo 3.5: assinatura do método get_list
get_list(
    $order_by = "",
    $where = "",
    $row_offset = 0,
    $limit=-1,
    $max=-1,
    $show_deleted = 0)
$order_by

Controla a ordem da lista retornada. $order_by é especificado como uma sequência que será usada na cláusula SQL ORDER BY, por exemplo para classificar por nome, você pode simplesmente passar name, para ordenar por date_entered descrescente use date_entered DESC. Você também pode classificar por vários campos. Por exemplo, ordenando por date_modified e id descrescente date_modified, id DESC.

$where

Permite filtrar os resultados usando uma cláusula SQL WHERE. $where deve ser uma sequência contendo as condições SQL. Por exemplo, no módulo de contatos, procurando contatos com nomes específicos, podemos usar contacts.first_name='Jim'. Observe que, se especificarmos a tabela, a consulta poderá acabar se unindo a outras tabelas, portanto, queremos garantir que não haja ambiguidade em qual campo segmentar.

$row_offset

A linha para começar. Pode ser usado para paginar os resultados.

$limit

O número máximo de registros a serem retornados pela consulta. -1 significa sem limite.

$max

O número máximo de entradas a serem retornadas por página. -1 significa o máximo padrão (geralmente 20).

$show_deleted

Se deseja incluir resultados excluídos.

Resultados 

get_list retornará uma matriz. Isso conterá as informações de paginação e também a lista de beans. Essa matriz conterá as seguintes chaves:

list

Uma matriz dos beans retornados pela consulta de lista

row_count

O número total de linhas no resultado

next_offset

O deslocamento a ser usado para a próxima página ou -1 se não houver mais páginas.

previous_offset

O deslocamento a ser usado para a página anterior ou -1 se esta for a primeira página.

current_offset

O deslocamento usado para os resultados atuais.

Exemplo 

Vamos ver um exemplo concreto. Retornaremos a terceira página de todas as contas com o setor Media usando 10 como tamanho da página e ordenado por nome.

Exemplo 3.6: Exemplo de chamada get_list
$beanList = $accountBean->get_list(
                                //Order by the accounts name
                                'name',
                                //Only accounts with industry 'Media'
                                "accounts.industry = 'Media'",
                                //Start with the 30th record (third page)
                                30,
                                //No limit - will default to max page size
                                -1,
                                //10 items per page
);

Isso retornará:

Exemplo 3.7: Exemplo de resultados de get_list
Array
(
    //Snipped for brevity - the list of Account SugarBeans
    [list] => Array()
    //The total number of results
    [row_count] => 36
    //This is the last page so the next offset is -1
    [next_offset] => -1
    //Previous page offset
    [previous_offset] => 20
    //The offset used for these results
    [current_offset] => 30
)
get_full_list 

get_list é útil quando você precisa de resultados paginados. No entanto, se você estiver apenas interessado em obter uma lista de todos os registros correspondentes, poderá usar get_full_list. O get_full_list A assinatura do método fica assim:

Exemplo 3.8: assinatura do método get_full_list
get_full_list(
            $order_by = "",
            $where = "",
            $check_dates=false,
            $show_deleted = 0

Esses argumentos são idênticos ao seu uso em get_list a única diferença é o argumento $check_dates. Isso é usado para indicar se os campos de data devem ser convertidos em seus valores de exibição (ou seja, convertidos no formato de data do usuário).

Resultados 

A chamada get_full_list simplesmente retorna uma matriz dos registros correspondentes

Exemplo

Vamos refazer nosso exemplo de get_list para obter a lista completa de contas correspondentes:

Exemplo 3.9: Exemplo de chamada get_full_list
$beanList = $accountBean->get_full_list(
                                //Order by the accounts name
                                'name',
                                //Only accounts with industry 'Media'
                                "accounts.industry = 'Media'"
                                );
retrieve_by_string_fields 

Às vezes, você deseja recuperar apenas uma linha, mas pode não ter o ID do registro. retrieve_by_string_fields permite recuperar um único registro com base nos campos de sequência correspondentes.

Exemplo 3.10: assinatura do método retrieve_by_string_fields
retrieve_by_string_fields(
                          $fields_array,
                          $encode=true,
                          $deleted=true)
$fields_array

Uma matriz de nomes de campos para o valor desejado.

$encode

Se os resultados devem ou não ser codificados em HTML.

$deleted

Se deve ou não adicionar o filtro excluído.

Observe aqui que, confusamente, o sinalizador excluído funciona de maneira diferente dos outros métodos que examinamos. Ele indica se devemos ou não filtrar os resultados excluídos. Portanto, se true for passado, os resultados excluídos não serão incluídos.

Resultados 

retrieve_by_string_fields retorna um único bean como resultado ou nulo se não houver nenhum feijão correspondente.

Exemplo

Por exemplo, para recuperar a conta com o nome Tortoise Corp e account_type Customer, podemos usar o seguinte:

Exemplo 3.11: Exemplo de chamada retrieve_by_string_fields
$beanList = $accountBean->retrieve_by_string_fields(
                                array(
                                  'name' => 'Tortoise Corp',
                                  'account_type' => 'Customer'
                                )
                              );