0

次のコードがあります。

$select = new Select();
$select->from($this->table);
$select->columns(array('id', 'refNumberOrder', 'dateOrder', 'kontragent', 'airOperator', 'aircraft', 'status'));

...

if ($object->customer != '') {
    $select->where->like('library_kontragent.short_name', $object->customer . '%');
}

if ($object->airOperator != '') {
    $select->where->like('library_air_operator.short_name', $object->airOperator . '%');
}

if ($object->aircraft != '') {
    $select->where->like('library_aircraft_type.name', $object->aircraft . '%');
}

$select->order('dateOrder ' . Select::ORDER_DESCENDING);
//\Zend\Debug\Debug::dump($select->getSqlString());

$resultSet = $this->selectWith($select);
$resultSet->buffer();

これにより、次の行が作成されます。

// MySQL result
WHERE "library_kontragent"."short_name" LIKE 'test%' 
    AND "library_air_operator"."short_name" LIKE 'test%' 
    AND "library_aircraft_type"."name" LIKE 'test%' 
ORDER BY "dateOrder" DESC"

次の文字列を取得するにはどうすればよいですか?

// MySQL result
WHERE ("library_kontragent"."short_name" LIKE 'test%' OR "library_kontragent"."long_name" LIKE 'test%') 
    AND "library_air_operator"."short_name" LIKE 'test%' 
    AND "library_aircraft_type"."name" LIKE 'test%' 
ORDER BY "dateOrder" DESC"
4

1 に答える 1

3

Ralph Schindler によるこの例を確認してください。中にNESTand UNNEST「演算子」がありますZend\Db\Sql\Where

于 2013-09-06T11:08:59.933 に答える