而不是在模型类中使用$this->fetchAll('email = ?',$email)->current()
,有没有办法$this->fetchByEmail($email)
或$this->findByEmail($email)
?
Zend_Log
已经有了这样一种神奇的方法,而不是$myLogger->log("Something went wrong",Zend_Log::CRIT)
你只需编写$myLogger->crit("Something went wrong")
并自动映射(通过__call()
中的一些时髦反映方法)。
有人知道在Zend_Db
课程中是否有类似内容,或者我是否必须为我做一些事情?
答案 0 :(得分:5)
对于您想要的特定功能,您需要构建自定义功能。老实说,魔法__call()函数背后的逻辑并不是那么困难。
这样的事情可以解决问题:
public function __call($function, $args)
{
// Expects findBy to be the first part of the function
$criteria = substr($function, 6);
$criteria = strtolower($criteria);
$select = $this->select()
->from($this->_name)
->where($criteria . ' = ?', $args);
}
显然,如果您希望它处理更复杂的情况,如数组或多个条件参数,您需要实现更好的检查,但这应该提供基本的想法。
答案 1 :(得分:0)
根据文档,您必须自己完成 http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.extending.finders
所以我建议创建你自己的或使用gabriel1836发布的那个