我已经将一个用 codeIgnotor 和 Propel 1.6 编写的项目作为ORM。我使用的唯一ORM是Eloquent,所以我在Propel中看到所有这些类真的很困惑。
当我使用已定义的模式运行推进蝙蝠文件时,我得到三个类,例如
对于我得到的用户
1 - User.php extends BaseUser
2 - UserPeer.php extends BaseUserPeer
3 - UserQuery.php extends BaseUserQuery
根据推进文档,Peer Class是为了向后兼容,这意味着什么。
并且如果有人能够解释每个班级内部将定义哪种类型的功能。
自动生成的版本中还有 om 文件夹。在这些类中添加方法是个好主意。
任何帮助都会得到真正的赞赏。如果有人可以使用用户示例进行解释。
答案 0 :(得分:2)
User
表中的一行,以及UserQuery.php中的查询/更新逻辑上面#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?
我希望它有所帮助。