[Joomla3][資料庫][教學]JOOMLA3的 Dbo 物件

日期:2016/10/16

 

大家好!
因為使用joomla3開發系統,這邊特別介紹一下 joomla3的 DBO 物件,DBO物件就是 資料庫物件,一般來說,基本上所有framework都會有自己的DBO,所以joomla 也不例外,有 JDatabase 這物件。
那我這邊介紹他的簡單用法
 
//取得DBO物件
$db = JFactory::getDBO();

//#############################查詢一筆資料
$query = $db->getQuery(true);//取得query 物件
$query->select('t.*,q.*')//欄位
    ->from('#__test_table AS t')//from
    ->join('LEFT','#__test_join AS q ON t.id = q.id')//join 方式
    ->where('t.id > 10 ')//條件
    ->order('t.id ASC');//排序
$db->setQuery($query,0,10);//設定query 字串 與 start 與 limit
$rows = $db->loadObjectList();//取得返回資料
$row  = $db->loadObject();//取得返回資料(一筆)

//#############################使用子查詢
$queryL = $db->getQuery(true);//取得子查詢query 物件
$queryL->select('p.id')
    ->from('#__test_little AS p')
    ->where('p.id > 99 ');

$queryN = $db->getQuery(true);//取得query 物件
$queryN->select('p.*')//欄位
    ->from('#__test_table2 AS p')//from
    ->where('p.id IN ('.$queryL.') ');//子查詢,直接呼叫子查詢物件會變成輸出字串
$db->setQuery($queryN,0,10);//設定query 字串 與 start 與 limit
$rowNs = $db->loadObjectList();//取得返回資料

//#############################新增一筆資料
$data = array(
    'id'   => '1',
    'name' => '張小明',
    );
$data = (object)$data;//insertObject 只能使用物件寫入
$db->insertObject('#__test_table',$data);

//#############################修改更新一筆資料(簡易)
$data = array(
    'id'   => '1',
    'name' => '張小明改名',
    );
$data = (object)$data;//insertObject 只能使用物件寫入
$db->updateObject('#__test_table',$data,'id');//table 名稱,資料,更新依據的key(只能設定一個)

//#############################修改更新一筆資料
$queryU = $db->getQuery(true);//取得query 物件
$queryU->update("#__test_table")
    ->set('name = '.$db->quote("張小明改名"))//設定值,quote為跳脫符號函式
    ->where('id = 1 ');//條件
$db->setQuery($query);//設定query
$db->execute();//執行query

//刪除一筆資料
$query->delete('#__test_table')
    ->where('id = 1 ');
$db->setQuery($query);
$db->execute();

//使用 transaction(有錯誤則取消更新)
$db->transactionStart();
try
{
    $Query = $db->getQuery(true);
    $data = array(
        'id'   => '1',
        'name' => '張小明改名2',
        );
    $data = (object)$data;
    $db->updateObject('#__test_table',$data,'id');
    $db->transactionCommit();
}
catch (Exception $e)
{
    $db->transactionRollback();
    JError::raiseError( 500,$e);
}



 
基本上會常用是這些
#__ 是table 的前綴詞
$db->quote 是在query 中常用的跳出字元函式(避免SQL injection)
 
有問題可以發問喔
感恩!

 

相關文章

PHP的JOOMLA的MVC開發架構之我見

【轉貼】PHP4 iconv 問題

留言板

歡迎留下建議與分享!希望一起交流!感恩!

comments powered by Disqus