发新话题
打印

使用symfony中的CREATE、RETRIEVE、UPDATE、DELETE

使用symfony中的CREATE、RETRIEVE、UPDATE、DELETE

本文转自:http://blog.vontall.cn/read.php?16

[p align=center]CREATE[/p]
简单插入
复制内容到剪贴板
代码:
/* initialize Propel, etc. */
$author = new Author();
$author->setFirstName("Jack");
$author->setLastName("London");
$author->save();
关联行插入
复制内容到剪贴板
代码:
/* initialize Propel, etc. */

// 1) Create an Author (row of 'author' table)
include_once 'bookstore/Author.php';
$author = new Author();
$author->setFirstName("Leo");
$author->setLastName("Tolstoy");
// note: we don't save this yet

// 2) Create a Publisher (row of 'publisher' table)
include_once 'bookstore/Publisher.php';
$pub = new Publisher();
$pub->setName("Viking Press");
// note: we don't save this yet

// 3) Create a Book (row of 'book' table)
include_once 'bookstore/Book.php';
$book = new Book();
$book->setTitle("War & Peace");
$book->setIsbn("0140444173");
$book->setPublisher($pub);
$book->setAuthor($author);
$book->save(); // saves all 3 objects!
[p align=center]RETRIEVE[/p]
从主键获取
获得一条:
复制内容到剪贴板
代码:
$firstBook = BookPeer::retrieveByPK(1);
// now $firstBook is a Book object, or NULL if no match was found.
获得多条:
复制内容到剪贴板
代码:
$myObject = MultiColPKExamplePeer::retrieveByPK(1,2);
获得一组:
复制内容到剪贴板
代码:
$selectedBooks = BookPeer::retrieveByPKs(array(1,2,3,4,5,6,7));
// $selectedBooks is an array of Book objects
数据库查询
简单查询:
复制内容到剪贴板
代码:
$c = new Criteria();
$c->add(AuthorPeer::FIRST_NAME, "Karl");
$c->add(AuthorPeer::LAST_NAME, "Marx", Criteria::NOT_EQUAL);
$authors = AuthorPeer::doSelect($c);
相当于
复制内容到剪贴板
代码:
SELECT * FROM author WHERE author.FIRST_NAME = 'Karl' AND author.LAST_NAME <> 'Marx';
复制内容到剪贴板
代码:
$c = new Criteria();
$c->add(AuthorPeer::LAST_NAME, array("Tolstoy", "Dostoevsky", "Bakhtin"), Criteria::IN);
$authors = AuthorPeer::doSelect($c);
// $authors contains array of Author objects
相当于
复制内容到剪贴板
代码:
SELECT ... FROM author WHERE author.LAST_NAME IN ('Tolstoy', 'Dostoevsky', 'Bakhtin');
复杂的逻辑查询(AND/OR):
复制内容到剪贴板
代码:
$c = new Criteria();
$cton1 = $c->getNewCriterion(AuthorPeer::FIRST_NAME, "Leo");
$cton2 = $c->getNewCriterion(AuthorPeer::LAST_NAME,  array("Tolstoy", "Dostoevsky", "Bakhtin"), Criteria::IN);
// combine them
$cton1->addOr($cton2);
// add to Criteria
$c->add($cton1);
相当于
复制内容到剪贴板
代码:
SELECT ... FROM author WHERE (author.FIRST_NAME = 'Leo' OR author.LAST_NAME IN ('Tolstoy', 'Dostoevsky', 'Bakhtin'));
复制内容到剪贴板
代码:
$c = new Criteria();
$cton1 = $c->getNewCriterion(AuthorPeer::FIRST_NAME, "Leo");
$cton2 = $c->getNewCriterion(AuthorPeer::FIRST_NAME, "Karl");
// combine them
$cton1->addOr($cton2);
// add to Criteria
$c->add($cton1);
或者
复制内容到剪贴板
代码:
$c = new Criteria();
$c->add(AuthorPeer::FIRST_NAME, "Leo");
$c->addOr(AuthorPeer::FIRST_NAME, "Karl");
直接使用SQL语句:
复制内容到剪贴板
代码:
$con = Propel::getConnection(DATABASE_NAME);
$sql = "SELECT books.* FROM books WHERE NOT EXISTS (SELECT id FROM review WHERE book_id = book.id)";  
$stmt = $con->createStatement();
$rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM);  
$books = BookPeer::populateObjects($rs);
[p align=center]UPDATE[/p]
单表:
复制内容到剪贴板
代码:
// 1) Fetch an object by primary key
$myBook = BookPeer::retrieveByPK(1);
// 2) update the values & save() it.
$myBook ->setTitle("War & Peace");
$myBook->save();
关联表:
复制内容到剪贴板
代码:
/* initialize Propel, etc. */
// 1) retrieve an Author
$author = AuthorPeer::retrieveByPK(1);
// 2) retrieve a Book
$book = BookPeer::retrieveByPK(1);
// 3) now blindly set $author as the author for $book!
$book->setAuthor($author);
$book->save();
[p align=center]DELETE[/p]
以键删除:
复制内容到剪贴板
代码:
BookPeer::doDelete(1);
以类对象删除:
复制内容到剪贴板
代码:
$book = BookPeer::retrieveByPK(1);
BookPeer::doDelete($book);
使用对象删除:
复制内容到剪贴板
代码:
$book = BookPeer::retrieveByPK(1);
$book->delete();
// (and now you must remember that you can no longer use the $book object)
[ 本帖最后由 gegeu 于 2007-11-8 14:42 编辑 ]
个人博客: 格格巫的屋

TOP

发新话题