Doctirne 查詢更新等操作

2021-09-25 19:17:03 字數 2490 閱讀 5054

$em = $this->getdoctrine()->getmanager();  //用doctrine進行管理

$book = new book();

$book->setname(); //生成book物件並進行初始化

$em->persist($book); //交給doctrine管理,生成sql語句

$em->flush(); //執行sql語句,重新整理資料庫

一般查詢需要使用repository,所以先提前寫好獲取repository的方法

//獲取userrepository

/*** @return \scourgen\webbundle\entity\userrepository

*/protected function getuserrepository()

//獲取book的

/*** @return \scourgen\webbundle\entity\bookrepository

*/protected function getbookrepository()

接下來演示幾個基本的查詢操作

//有三種方法,findall,findoneby,findby進行查詢

//findby 根據傳入條件進行查詢,返回乙個資料集,可以使用foreach進行遍歷

//這裡看一下findby的原型宣告

public function findby(array $criteria, array $orderby = null, $limit = null, $offset = null);

//可以看出第乙個引數是字段,第二個是按照某個字段進行排序,$limit限制返回資料條數,$offset不清楚暫時

//按照標題字段進行查詢並按照price降序排序

/** @var $book \scourgen\webbundle\entity\book*/ 使用annoation表明$book是乙個book物件

$books = $this->getbookrepository()->finby(array('title'=>'書本'),array('price'=>'desc'));

foreach($books as $book)

//findoneby 

//先看一下fingoneby函式原型,引數都類似,由於是查詢乙個,所以就沒有offset和limit引數,只需要注意返回的只是乙個物件,

public function findoneby(array $criteria, array $orderby = null);

//findall()  這個簡單,查詢所有資料,一般不會用到

//這裡暫時只學習這幾個簡單的,之後再進行補充

//還有的時候需要使用原生sql語句進行查詢,具體流程如下

$sql = "select book.title from book where book.id =1 or book.id=2;";生成sql語句

$this->get("database_connection")->fetchall($sql); //使用fetchall方法進行查詢,返回資料集,但是需要注意,這樣返回的資料不是我們所定義的book物件,而是原生的mysql物件

先查詢需要刪除的資料,之後使用persist()交給doctrine進行託管,最後用$em->remove(); 方法從資料庫當中刪除資料

//這裡說明以下doctrine的事務處理,

$em = $this->getdoctrine()->getmanager();

$em->getconnection()->begintransaction(); //開啟事務

trycatch(exception $e)

一般有一些更新操作我們會經常執行,比如建立時間,更新時間欄位的記錄,這裡我們可以使用orm\prepersist和orm\preupdate實現

前者是建立新的物件重新整理資料庫之前進行操作,而後者是在更新某個物件之前進行操作,比如我們可以在建立物件之後,更新資料之前,

對建立書寫函式進行設定,又比如我們在更新操作執行之前,對更新時間書寫函式進行自動設定,下面是例子

/**

* 在建立之前先進行的操作,記錄時間

* @orm\prepersist()

*/public function prepersist()

$this->setupdatetime(new \datetime('now')); //記錄更新時間

}/**

* 在更新之前進行的操作,更新時間

* 如果有很多表都有這個操作,可以建立乙個基類,有這些方法,繼承即可

* @orm\preupdate()

*/public function preupdate()

GridView 編輯,更新,刪除 等操作

protected void gridview1 rowcancelingedit object sender,gridviewcancelediteventargs e 編輯按鍵下的取消 將editindex 1,然後在繫結資料庫。protected void gridview1 rowdelet...

DataTable表轉殖 查詢等操作

從乙個datatable中取一行放到另乙個datatable裡報錯 該行已經屬於另乙個表。我的筆記 datatable dt new datatable dt ds.tables all clone 轉殖all的結構傳遞給dt datarow dr this.dataset31.tables pro...

二 資料的更新操作以及查詢操作

更新操作 通過 jdbc 向指定的資料表中插入一條記錄.1.statement 用於執行 sql 語句的物件 1 通過 connection 的 createstatement 方法來獲取 2 通過 executeupdate sql 可以執行 sql 語句.3 傳入的 sql 可以是 insret...