ccORM使用說明

字號+ 編輯: 种花家 修訂: 种花家 來源: 原创 2023-09-11 我要說兩句(2)

針對本站推出的ORM附帶的操作說明文档。

ORM源碼地址

這個文档是針對本站提出的ORM對應定制的, 源碼地址鏈接 http://www.wkwkk.com/article/f166522c5c3d490203fb2456bcdc37d0.html

連貫操作

以下是增刪改查基本指令說明:

連貫操作查詢語句 select from where order by limit

select(...)->from(...)->where(...)->having(...)->groupBy(...)->orderBy(...)->limit(...)->all()/row()/single() 這樣的連貫操作方式是以構造形式取多行、取一行、取單個;

舉例:

select id,name from prefix_article where is_shown = 1 order by update_time desc limit 50;

用本orm可以這樣寫:

// 類先繼承基礎模型,基礎模型實例化Pdo操作類
$this->onRead()
    ->select('id,name')
    ->from('article')
    ->where([
        'is_shown' => 1
    ])
    ->orderBy('update_time desc')
    ->limit(50)
    ->row();

其中, 本orm採用了讀、寫、事務庫調用分離的方式, 那麽onRead()方法是調用讀庫。onWrite類似laravel框架當中orm用到的onWriteConnection方法, 顧名思義, 如果在$this指針後面調用onWrite()方法就是調用寫庫。onTrans()方法是調用事務。這三種方法返回的都是PDO被實例化後的對象

from方法内傳入的參數article不傳數據表前綴是因爲在配置對象當中prefix選項事先已經寫好。

連貫操作左連接

->leftJoin([string 表名稱], [string 表別名], [string on關鍵字後邊的關係表達式])

如果使用了左連接, 一般來說都會在主表上設置別名, 聯表時請給主表增加別名

例如以下原生SQL語句:

select id from prefix_table_a a left join prefix_table_b as b on a.id = b.aid;

就可以寫成以下連貫語句

$this->onRead()
     ->select('id')
     ->from('table_a', 'a')
     ->leftJoin('table_b', 'b', 'a.id = b.aid')
     // ->leftJoin('table_c', 'c', 'c.aid = a.id')
     ->all();

連貫操作非查詢語句 insert update delete set values

連貫操作統一用go()方法來確定執行。

舉例說明

sql原生插入語句, 其中兩個?號各綁定到$v1, $v2兩個PHP變量裡

insert into prefix_member ( field1, field2 ) values ( ?, ? );

可以寫成以下php連貫語句

$this->onWrite()
    ->insert('member')  // 事先在數據庫配置數組裡面槼定了prefix爲"prefix_"
    ->values([
        'field1' => $v1,
        'field2' => $v2,
    ])
    ->go();

sql原生更新語句, 其中兩個?號各綁定到$v1, $v2兩個PHP變量

update prefix_member set field1 = ? where ( status = ? );

可以寫成以下PHP連貫操作語句

$this->onWrite()
    ->update('member')
    ->set([
        'field1' => $v1,
    ])
    ->where([
        'status' => $v2,
    ])
    ->go();

sql原生刪除語句, 其中?號綁定到PHP變量$v

delete from prefix_member where trashfield = ?;

可以寫成以下PHP連貫操作語句

$this->onWrite()
    ->delete('member')
    ->where([
        'trashfield' => $v,
    ])
    ->go();

原生語句

原生語句操作查詢語句

sql(...)->bind(...)->all()/row()/single() 和上文一樣, 爲sql原生語句取多行取一行取單個

以使用本orm實現上個原生sql語句的寫法, 寫法是:

$this->onRead()
     ->sql('select * from *_article where id = 6')
     ->row();

如果id傳的參數是一個變量$id, 那麽寫法如下:

$this->onRead()
    ->sql('SELECT * FROM *_article WHERE id = ?')
    ->bind([
        $id,
    ])
    ->row();

其中bind方法傳入的參數是按問號(?)出現的次序逐個在數組中出現的,内部實現僅是用pdo按次序綁定參數而已。

原生語句操作非查詢語句

調用sql(...)->bind(...)->go() 的方法和上文一樣, 也是爲習慣於寫原生非查詢語句來實現的簡單操作方式。

寫法舉例如下:

$this->onWrite()
    ->sql('insert into lalala ( fileda, fieldb ) values ( ?, ? )')
    ->bind([
        $samplevalue_a,
        $samplevalue_b,
    ])
    ->go();

緩存查詢數據

在查詢語句中使用在最後操作方法執行之前插入一句cache()方法就可以了, 支持兩個可選參數,第一個參數是生存秒數,默認爲30秒,第二個參數是自定義key值, 不寫則orm自動根據sql去hash一個值。

代碼例子:

$this->onRead()
    ->select('content')
    ->from('table_a')
    ->where([
        'id' => $id,    
    ])
    ->cache(5, 'arch_' . $id)
    ->single();


閲完此文,您的感想如何?
  • 有用

    2

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • mac開發接入微信公衆號接口返回報錯 cURL error 56: SSLRead() return error -9806

  • PHP的換行符是什麽

  • pecl安裝程序時報錯Array and string offset access syntax with curly braces is no longer supported

  • 由於商家傳入的H5交易參數有誤,該筆交易暫時無法完成,請聯繫商家解決

我要說說
網上賓友點評
1 樓 IP 106.50.***.27 的嘉賓 说道 : 很久前
你这个orm功能太少,喜欢功能全的

2 樓 IP 223.20.***.26 的嘉賓 说道 : 很久前
玩玩