コードにphp 5.3を使用しています。次の形式でデータを並べ替えたいと思います。
ビル 01 - 101
ビル 01 - 150
ビル 02 - 100
ビル 02 - 105
ビル 03 - 099
public static function fetchSortedPropertyUnits() {
$strSql = 'SELECT pu.*,pb.building_name
FROM property_units pu
LEFT JOIN property_buildings pb ON( pu.property_building_id = pb.id )
WHERE pu.management_company_id = ' . $intManagementCompanyId . '
AND pu.property_id = ' . $intPropertyId . '
ORDER BY
COALESCE ( CAST ( SUBSTRING ( pb.building_name FROM \'([a-zA-Z ]{1,26})\' ) AS VARCHAR ), \'\' ),
COALESCE ( CAST ( SUBSTRING ( pb.building_name FROM \'([0-9]{1,10})\' ) AS INTEGER ), 0 ),
COALESCE ( CAST ( SUBSTRING ( pu.unit_number FROM \'([a-zA-Z ]{1,26})\' ) AS VARCHAR ), \'\' ),
COALESCE ( CAST ( SUBSTRING ( pu.unit_number FROM \'([0-9]{1,10})\' ) AS INTEGER ), 0 ),
pb.building_name,
pu.unit_number';
return self::fetchPropertyUnits( $strSql, $objDatabase ); }
これは私が使用したフェッチ関数です。
&私は次のように私のコードでそれを使用します。
$arrobjSortedPropertyUnits = CPropertyUnits::fetchSortedPropertyUnits( $this->m_objPropertyUtilitySetting->getManagementCompanyId(), $this->m_objPropertyUtilitySetting->getPropertyId(), $this->m_objClientDatabase );
foreach( $this->m_arrobjPropertyUnits as $objPropertyUnit ) {
$strUnitNumber = $objPropertyUnit->getUnitNumber();
if( true == valObj( $objPropertyUnit, 'CPropertyUnit' ) && true == $objPropertyUnit->getPropertyBuildingId() ) {
$strUnitNumber = $objPropertyUnit->getBuildingName() . ' - ' . $objPropertyUnit->getUnitNumber();
$objPropertyUnit->setUnitNumber( $strUnitNumber );
}
}
プロパティに建物がない場合は、ユニット番号でのみ並べ替えます。この問題に関するヘルプは大歓迎です。ありがとう。