2015-08-03 59 views
1

我已經給出了一個項目,寫在codeIgnotor推動1.6作爲ORM。我使用的唯一ORM就是Eloquent,所以在Propel中看到所有這些類都讓我感到困惑。Propel自動生成的類

當我運行與推進定義的架構bat文件,我得到三個類e.g

對於用戶,我得到

1 - User.php  extends BaseUser 
2 - UserPeer.php extends BaseUserPeer 
3 - UserQuery.php extends BaseUserQuery 

根據推動文檔Peer類是爲了向後兼容是什麼意思。

而且如果有人可以請解釋在每個班級內定義什麼類型的功能。

另外還有om自動生成的構建文件夾。在這些類中添加方法是一個好主意。

任何幫助將realllly讚賞。如果有人可以使用用戶的例子來解釋。

回答

2
  1. 下面是一個很好的行走文章:Propel By Example
  2. user.php的代表在User表中的一行,並在UserQuery.php查詢/更新邏輯
  3. OM文件夾包含類從您的「用戶」被擴展,所以不要觸摸文件夾的定義,它被覆蓋每次你建立你的模型

舉例#2以上

場景#1:更新用戶時,將TimeUpdated列設置爲unix當前時間。

情景2:您希望能夠得到用戶的全名

實現:

<?php 
class User extends BaseUser 
{ 
    public function preUpdate(PropelPDO $oConn=null) 
    { 
     $this->setTimeUpdated(time()); 
    return true; 
    }// Will be executed everytime you call '->save()' on an existing row 

    public function getName() 
    { 
     return $this->getFirstName() . ' ' . $this->getLastName(); 
    } 
... 

場景#2用法:

$User = UserQuery::create()->findPk(1); 
echo 'FirstName: ' . $User->getName(); 

情景3:您希望爲男性青少年用戶添加一個篩選器 執行:

<?php 
class UserQuery extends BaseUserQuery 
{ 
    public function MaleTeen() 
    { 
     return $this 
      ->filterByGender('M') 
      ->filterByAge([ 
       'min' => 13, 
       'max' => 19 
      ]); 
    } 
... 

用法:$Teens = UserQuery::create()->MaleTeen()->find(); // Did someone say D.R.Y?

我希望它有幫助。