A quick post to show how one can easily implement a findByField wrapper in Zend_Db_Table:

[php]
	/**
	 * Implements a simple findByField wrapper
	 */

	public function __call($method, $args) {
		if (preg_match('/^findBy([a-zA-Z0-9]+)$/', $method, $parts)) {
			$field = strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $parts[1]));
			if (!in_array($field, $this->_cols)) {
				throw new Zend_Db_Table_Exception(sprintf('\'%s\' field not in row', $field));
			} else {
				$db = $this->getAdapter();
				$where = $db->quoteInto($db->quoteIdentifier($field).' = ?', $args[0]);
				return $this->fetchAll($where);
			}
		}
	}

What it does is basically trapping any non-existant method call and check if the corresponding field exists, after converting CamelCasing to underscore_notation (eg: FooBar becomes foo_bar).