O objeto database do Joomla 1.5 possui alguns métodos
que facilitam a vida dos programadores de extensões (componentes,
módulos e plugins).
O básico
Bem, o básico do objeto Database é o seguinte: quando o Joomla 1.5 é
iniciado, ele precisa fazer uma série de consultas à sua base de dados,
senão nem consegue "entrar no ar". Para fazer estas consultas, o sistema
cria um objeto database. Se este objeto já existe, não há a necessidade
de criar um objeto do mesmo tipo para suprir nossas necessidades -
basta chamá-lo por referência. Para invocar qualquer objeto
por referência usa-se o marcador
&. No caso, para obter este objeto, o código é o seguinte:
$db =& JFactory::getDBO();
Curtinho e prático, e nosso objeto de desejo está incorporado a $db
De posse do $db podemos fazer uma porção de estripulias.
Colhendo os frutos
Com o objeto Database à disposição podemos fazer uma
query
(pergunta) ao banco de dados e depois colher as respostas. Para colocar
uma pergunta chama-se (com ->) o método setQuery() através deste
objeto. Por exemplo:
$db->setQuery('SELECT * FROM #__content');
Depois da
query colocada, podemos consultar vários resultados.
Por exemplo, se quisermos apenas o valor do primeiro campo da primeira
linha do conjunto de resultados, é só usar o método
loadResult:
$db =& JFactory::getDBO();
$db->setQuery('SELECT * FROM #__content');
$pergunta = $db->loadResult();
Se quisermos todos os campos da primeira linha do conjunto de resultados, então é preciso chamar:
$pergunta = $db->loadResultArray();
que coloca os resultados encontrados num array. Se preferir um objeto
cujas propriedades sejam os nomes dos campos, você pode executar a
query com:
$objeto = null;
$db->loadObject( $objeto );
Agora $objeto->title é o título do primeiro artigo achado,
$objeto->alias é o apelido do artigo e assim por diante. Quando o
objeto for null, este método cria o objeto e lhe atribui as
propriedades com os valores da primeira linha encontrada.
Mas, se quisermos um array de objetos com todos os artigos da tabela, devemos fazer o seguinte:
$db =& JFactory::getDBO();
$db->setQuery('SELECT * FROM #__content');
$pergunta = $db->loadObjectList();
foreach( $pergunta as $artigo) {
echo "$artigo->title: $artigo->alias"
}
Este trecho de código vai listar todos os títulos e todos os
alias dos artigos existentes na tabela de artigos.
Pois bem, e se eu quiser apenas que uma query atualize algum campo de alguma tabela da base de dados? Aí é mais fácil:
$db =& JFactory::getDBO();
$query = "UPDATE TABLE #__content SET title='Novo título' WHERE id=1";
$db->setQuery( $query );
$db->query();
Observe que a
query foi colocada numa variável, a $query. Depois, esta variável foi usada como parâmetro em
setQuery(). Isto não é obrigatório, mas deixa o código um pouco mais claro. Uma vez colocada a
query, ela pode (e deve) ser acionada pelo método
query(). Aí está tudo em riba
Mais algumas mordomias
Além de buscar resultados de pesquisas, também podemos usar o objeto database para fornecer alguns valores extras. Por exemplo:
$db->getEscaped( "pingo d'água" );
prepara strings com caracteres especiais (como é o caso do apóstrofo)
para que sejam aceitas pelo banco de dados sem darem erro. O método
acima transforma "pingo d'água" em "pingo d\'água".
O método getNullDate fornece uma "data e hora" zerada, ou seja, 000-00-00 00:00:00
$db->getNullDate();
Se quisermos saber quantas linhas foram produzidas pela última query que foi acionada, o método é:
$db->getNumRows()
Para fazer tratamento de erros podemos usar o seguinte:
if( $db->getErrorNum() ) {
echo $db->getErrorMsg();
}
fonte : http://www.numaboa.com.br/informatica/tutos/joomla/957-objeto-database