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 的傳輸有多種通道可供使用,並且可以將多個通道整合應用,因此...