我有一种方法,可以使用参数中指定的顺序从数据库中的表中获取所有行:
public static function getAllOrderedBy($orders = null)
{
$criteria = new Criteria();
if(is_array($orders))
{
foreach($orders as $column => $order)
{
if($order == 'asc')
{
$criteria->addAscendingOrderByColumn($column);
}
else if($order == 'desc')
{
$criteria->addDescendingOrderByColumn($column);
}
}
}
else if($orders != null)
{
$criteria->addAscendingOrderByColumn($orders);
}
return self::doSelect($criteria);
}
此方法在PagePeer
类中进行,但我想将其用于多个模型,例如LinkPeer
或SubjectPeer
。
我可以将这个代码从一个模型复制并粘贴到另一个模型,但是我想问一下是否有更好的方法可以让这个方法适用于所有这些类?
如果使用情况发生变化,这不是问题,因此我不会调用PagePeer:getAllByOrder(PagePeer::TITLE)
而是其他内容,我只是不想将此代码复制到它所使用的每个模型中。
答案 0 :(得分:1)
有两种方法可以实现这一目标。
staticMethods()
The Definitive Guide to symfony 1.0
中。见Chapter 17 - Extending Symfony。在本指南的较新版本中,删除了有关mixins的信息,但似乎sfMixer类的代码尚未更改(sfMixer in sf1.0和sfMixer in sf1.4)