我正在将CakePHP框架从1.3升级到2.4.3。
现在不推荐使用set,我遇到了以下语法问题:
$parentRateGroup = Set::extract('/.[equip_type_id=1]', $parentRates);
这适用于Set,但不适用于等效的Hash方法,即
$parentRateGroup = Hash::extract($parentRates, '/.[equip_type_id=1]');
我尝试了很多东西,我能解决的唯一方法是手动循环遍历数组并按键匹配。
这是$ parentRates数组的片段。令人困难的是没有父键来对数组进行分组。
array(57) {
[0]=>
array(21) {
["id"]=>
string(2) "93"
["equip_type_id"]=>
string(1) "1"
["rate_group_id"]=>
string(1) "3"
["price_effective_date"]=>
string(10) "0000-00-00"
["price"]=>
string(5) "85.50"
["operator_pay"]=>
NULL
["inherit_from_parent"]=>
string(5) "Fixed"
["inherit_percentage"]=>
NULL
["is_poa"]=>
bool(false)
["is_from"]=>
bool(false)
["rental_unit_id"]=>
string(1) "2"
["equip_min_hire_notes"]=>
string(31) "Min hire 5 hrs + 1 hr transport"
["equip_type_size_grouping_id"]=>
NULL
["size_id_min"]=>
NULL
["size_id_max"]=>
NULL
["RentalUnit"]=>
array(2) {
["id"]=>
string(1) "2"
["name"]=>
string(8) "per hour"
}
["SizeGrouping"]=>
array(0) {
}
["SizeMin"]=>
array(0) {
}
["SizeMax"]=>
array(0) {
}
["EquipTypesRateGroupAttribute"]=>
array(10) {
[0]=>
array(14) {
["id"]=>
string(3) "658"
["equip_type_rate_group_id"]=>
string(2) "93"
["equip_type_attribute_id"]=>
string(1) "1"
["price"]=>
NULL
["operator_pay"]=>
NULL
["inherit_from_parent"]=>
string(5) "Fixed"
["inherit_percentage"]=>
string(4) "0.00"
["is_poa"]=>
bool(false)
["is_from"]=>
bool(false)
["is_combination"]=>
bool(false)
["rental_unit_id"]=>
NULL
["equip_min_hire_notes"]=>
string(0) ""
["EquipTypeAttribute"]=>
array(6) {
["id"]=>
string(1) "1"
["equip_type_id"]=>
string(1) "1"
["attribute"]=>
string(3) "4x4"
["is_active"]=>
bool(true)
["show_in_rate_group"]=>
bool(true)
["stock_code"]=>
string(2) "BH"
}
["RentalUnit"]=>
array(0) {
}
有什么想法吗?
答案 0 :(得分:1)
Hash::extract()
不支持将提取路径提供为xpath(您在示例中显示的路径采用xpath格式)。它仅支持以Set::classicExtract()
格式提供路径。
因此,您可以选择更新代码或继续使用Set::extract()
。即使它被弃用,它仍然可以在2.x中使用。