60 lines
2.0 KiB
PHP
60 lines
2.0 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* @copyright 2009-2014 City of Bloomington, Indiana
|
||
|
* @license http://www.gnu.org/licenses/agpl.txt GNU/AGPL, see LICENSE.txt
|
||
|
* @author Cliff Ingham <inghamn@bloomington.in.gov>
|
||
|
*/
|
||
|
namespace Application\Models;
|
||
|
|
||
|
use Blossom\Classes\TableGateway;
|
||
|
use Zend\Db\Sql\Select;
|
||
|
use Zend\Db\Sql\Predicate\Like;
|
||
|
use Zend\Db\Sql\Predicate\PredicateSet;
|
||
|
|
||
|
class DeedsTable extends TableGateway
|
||
|
{
|
||
|
public function __construct() { parent::__construct('deeds', __namespace__.'\Deed'); }
|
||
|
|
||
|
private $columns = array(
|
||
|
'id','section_id','lot','lot2','cemetery_id',
|
||
|
'lastname1','firstname1','middleInitial1',
|
||
|
'lastname2','firstname2','middleInitial2',
|
||
|
'issueDate','notes'
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* @param array $fields
|
||
|
* @param string|array $order Multi-column sort should be given as an array
|
||
|
* @param bool $paginated Whether to return a paginator or a raw resultSet
|
||
|
* @param int $limit
|
||
|
*/
|
||
|
public function search($fields=null, $order='id', $paginated=false, $limit=null)
|
||
|
{
|
||
|
$select = new Select('deeds');
|
||
|
if (count($fields)) {
|
||
|
foreach ($fields as $key=>$value) {
|
||
|
if (!empty($value)) {
|
||
|
switch ($key) {
|
||
|
case 'lastname':
|
||
|
case 'firstname':
|
||
|
case 'middleInitial':
|
||
|
if (!empty($value)) {
|
||
|
$select->where(
|
||
|
new PredicateSet([
|
||
|
new Like("{$key}1", "$value%"),
|
||
|
new LIke("{$key}2", "$value%")
|
||
|
], PredicateSet::OP_OR)
|
||
|
);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
$select->where([$key=>$value]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return parent::performSelect($select, $order, $paginated, $limit);
|
||
|
}
|
||
|
}
|