Doctrine2 基礎概念

2022-05-06 23:51:09 字數 1769 閱讀 4205

1.安全,比如防止sql注入等,pdo裡面prepare,execute 就可以

2.效能,資料庫操作是最基本的操作,頻繁使用,需要考慮到執行效率

4.支援多種資料庫(不常用)

即可實現排序功能。即自動實現相同功能的集合

。。。。很明顯doctirne這些條件都滿足了

下面我們對doctirne2先進行乙個預覽

/*

* * @route("/") */

class defaultcontroller extends

controller

$em->presist($user

);

$em->flush

();

}}

可以看到,首先$em是傳進來的乙個物件,getrepositor('user')獲取user資訊,之後以id為1進行分類,返回乙個使用者陣列給$user

,setname()  對使用者的名字進行設定,$em->presist()將我們更改的資訊交給$em託管,之後$em會自動進行處理,生成乙個update語句,更改表中id為1的名字,flush() 重新整理即完成更改。

中間的getadressbooks,是假定user表和adressbooks表示一對多的關係,獲取該使用者對應的所有adressbooks,遍歷並輸出其name。、

可以看到沒有像之前一樣,編寫複雜的sql語句進行查詢更新,就完成了這些操作。在symfony網頁下方也可以檢視生成的sql語句

1.entity

類似於乙個物件, 裡面有各種字段以及屬性,並且像mysql一樣,其間有各種關係。比如剛才所用$em就是

2.repository

乙個操作集合,比如前面的getrepository()->findoneby();將查詢使用者操作放在getrepository裡面,選取相應的操作即可,

將資料庫相關的業務邏輯操作封裝起來,直接呼叫就行,

3.proxy

像之前的$user,他並不是一開始就將所有sql語句都生成出來,將所有資訊都存放在$user之中,而是當你需要哪個資訊的時候,

他才生成sql語句,執行查詢操作,得到相應資料,相當於句動態查詢的。

而當還沒有查詢之前的$user,就處於proxy狀態,虛擬狀態,用到的時候才會將其 例項化進行使用.

構建查詢語句,比sql更簡單一些,

$query = $em->

createquery(

select u from

database:user p where u.name=:name'

)setparameter(

'name'

,'scourgen'

);

上面的例子就是乙個dql查詢語句

下面的例子和上面的等價,不過是動態構建了乙個dql語句,更為物件導向化,可以將每乙個語句都當做乙個方法去替換他

$query = $em->getrepository('

user

')->createqueybuilder('u'

)

->

where('

u.name=:name')

->setparmameter('

name

','scourgen')

->getquery();

比如現在有乙個事件會做很多事情,如果要每次都手動都新增時間戳進行記錄,會很麻煩。所以doctrine2為我們提供了這種自動監聽機制,不需要去手動監聽

quick cocos2d lua 基礎概念

控制場景的切換,cocos2d lua中把類抽象為導演類。開始 結束遊戲 遊戲場景的切換 設定或獲取一些系統資訊 場景可以包括多個層,層又可以擁有任意個遊戲節點,是其他元素的容器。建立場景 display.newscene name 切換場景 display.replacescene newscen...

python基礎概念 python基礎概念

當你輸入name input 並按下回車後,python互動式命令列就在等待你的輸入了。這時,你可以輸入任意字元,然後按回車後完成輸入。要列印出name變數的內容,除了直接寫name然後按回車外,還可以用print 函式 以 開頭的語句是注釋,注釋是給人看的,可以是任意內容 整數python可以處理...

鳥哥私房菜基礎網路概念2

2.2.1 廣域網路使用的裝置 整合服務數字網路 integrated services digital network,isdn 也是利用現有的 線路來達成網路聯機的目的,只是聯機的兩端都需要有 isdn 的數據機來提供聯機功能。isdn 的傳輸有多種通道可供使用,並且可以將多個通道整合應用,因此...