php – 重新排列数组索引Eloquent Laravel

从laravel eloquent数组中删除一个元素后出错

酒店设有客房

foreach ($property->rooms as $key => $room) {
    if ($room->type == 1 and $type ==1 and $room->price < $price->min or $room->price > $price->max) {
            print_r($property->rooms);
            unset($property->rooms[$key]);
            //$array = array_values($property->rooms); doesn't work
            print_r($property->rooms);
        }
    }

当我将其编码为json时,数组将转换为对象而不是数组

在未设置之前

Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
    (
        [0] => Room Object
            (
                [table:protected] => rooms
                [fillable:protected] => Array
                    (
                        [0] => properties_id
                        [1] => price
                        [2] => is_available
                        [3] => type
                        [4] => description
                    )

                [connection:protected] => 
                [primaryKey:protected] => id
                [perPage:protected] => 15
                [incrementing] => 1
                [timestamps] => 1
                [attributes:protected] => Array
                    (
                        [id] => 1
                        [properties_id] => 4
                        [price] => 450000
                        [is_available] => 1
                        [created_at] => 0000-00-00 00:00:00
                        [updated_at] => 2014-10-20 22:27:44
                        [type] => 1
                        [description] => 
                    )

                [original:protected] => Array
                    (
                        [id] => 1
                        [properties_id] => 4
                        [price] => 450000
                        [is_available] => 1
                        [created_at] => 0000-00-00 00:00:00
                        [updated_at] => 2014-10-20 22:27:44
                        [type] => 1
                        [description] => 
                    )

                [relations:protected] => Array
                    (
                    )

                [hidden:protected] => Array
                    (
                    )

                [visible:protected] => Array
                    (
                    )

                [appends:protected] => Array
                    (
                    )

                [guarded:protected] => Array
                    (
                        [0] => *
                    )

                [dates:protected] => Array
                    (
                    )

                [touches:protected] => Array
                    (
                    )

                [observables:protected] => Array
                    (
                    )

                [with:protected] => Array
                    (
                    )

                [morphClass:protected] => 
                [exists] => 1
            )

        [1] => Room Object
            (
                [table:protected] => rooms
                [fillable:protected] => Array
                    (
                        [0] => properties_id
                        [1] => price
                        [2] => is_available
                        [3] => type
                        [4] => description
                    )

                [connection:protected] => 
                [primaryKey:protected] => id
                [perPage:protected] => 15
                [incrementing] => 1
                [timestamps] => 1
                [attributes:protected] => Array
                    (
                        [id] => 2
                        [properties_id] => 4
                        [price] => 350000
                        [is_available] => 1
                        [created_at] => 0000-00-00 00:00:00
                        [updated_at] => 2014-10-21 18:13:15
                        [type] => 1
                        [description] => 
                    )

                [original:protected] => Array
                    (
                        [id] => 2
                        [properties_id] => 4
                        [price] => 350000
                        [is_available] => 1
                        [created_at] => 0000-00-00 00:00:00
                        [updated_at] => 2014-10-21 18:13:15
                        [type] => 1
                        [description] => 
                    )

                [relations:protected] => Array
                    (
                    )

                [hidden:protected] => Array
                    (
                    )

                [visible:protected] => Array
                    (
                    )

                [appends:protected] => Array
                    (
                    )

                [guarded:protected] => Array
                    (
                        [0] => *
                    )

                [dates:protected] => Array
                    (
                    )

                [touches:protected] => Array
                    (
                    )

                [observables:protected] => Array
                    (
                    )

                [with:protected] => Array
                    (
                    )

                [morphClass:protected] => 
                [exists] => 1
            )

        [2] => Room Object
            (
                [table:protected] => rooms
                [fillable:protected] => Array
                    (
                        [0] => properties_id
                        [1] => price
                        [2] => is_available
                        [3] => type
                        [4] => description
                    )

                [connection:protected] => 
                [primaryKey:protected] => id
                [perPage:protected] => 15
                [incrementing] => 1
                [timestamps] => 1
                [attributes:protected] => Array
                    (
                        [id] => 3
                        [properties_id] => 4
                        [price] => 250000
                        [is_available] => 1
                        [created_at] => 0000-00-00 00:00:00
                        [updated_at] => 0000-00-00 00:00:00
                        [type] => 1
                        [description] => 
                    )

                [original:protected] => Array
                    (
                        [id] => 3
                        [properties_id] => 4
                        [price] => 250000
                        [is_available] => 1
                        [created_at] => 0000-00-00 00:00:00
                        [updated_at] => 0000-00-00 00:00:00
                        [type] => 1
                        [description] => 
                    )

                [relations:protected] => Array
                    (
                    )

                [hidden:protected] => Array
                    (
                    )

                [visible:protected] => Array
                    (
                    )

                [appends:protected] => Array
                    (
                    )

                [guarded:protected] => Array
                    (
                        [0] => *
                    )

                [dates:protected] => Array
                    (
                    )

                [touches:protected] => Array
                    (
                    )

                [observables:protected] => Array
                    (
                    )

                [with:protected] => Array
                    (
                    )

                [morphClass:protected] => 
                [exists] => 1
            )

    )

)

未设置之后

Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
    (
        [1] => Room Object
            (
                [table:protected] => rooms
                [fillable:protected] => Array
                    (
                        [0] => properties_id
                        [1] => price
                        [2] => is_available
                        [3] => type
                        [4] => description
                    )

                [connection:protected] => 
                [primaryKey:protected] => id
                [perPage:protected] => 15
                [incrementing] => 1
                [timestamps] => 1
                [attributes:protected] => Array
                    (
                        [id] => 2
                        [properties_id] => 4
                        [price] => 350000
                        [is_available] => 1
                        [created_at] => 0000-00-00 00:00:00
                        [updated_at] => 2014-10-21 18:13:15
                        [type] => 1
                        [description] => 
                    )

                [original:protected] => Array
                    (
                        [id] => 2
                        [properties_id] => 4
                        [price] => 350000
                        [is_available] => 1
                        [created_at] => 0000-00-00 00:00:00
                        [updated_at] => 2014-10-21 18:13:15
                        [type] => 1
                        [description] => 
                    )

                [relations:protected] => Array
                    (
                    )

                [hidden:protected] => Array
                    (
                    )

                [visible:protected] => Array
                    (
                    )

                [appends:protected] => Array
                    (
                    )

                [guarded:protected] => Array
                    (
                        [0] => *
                    )

                [dates:protected] => Array
                    (
                    )

                [touches:protected] => Array
                    (
                    )

                [observables:protected] => Array
                    (
                    )

                [with:protected] => Array
                    (
                    )

                [morphClass:protected] => 
                [exists] => 1
            )

        [2] => Room Object
            (
                [table:protected] => rooms
                [fillable:protected] => Array
                    (
                        [0] => properties_id
                        [1] => price
                        [2] => is_available
                        [3] => type
                        [4] => description
                    )

                [connection:protected] => 
                [primaryKey:protected] => id
                [perPage:protected] => 15
                [incrementing] => 1
                [timestamps] => 1
                [attributes:protected] => Array
                    (
                        [id] => 3
                        [properties_id] => 4
                        [price] => 250000
                        [is_available] => 1
                        [created_at] => 0000-00-00 00:00:00
                        [updated_at] => 0000-00-00 00:00:00
                        [type] => 1
                        [description] => 
                    )

                [original:protected] => Array
                    (
                        [id] => 3
                        [properties_id] => 4
                        [price] => 250000
                        [is_available] => 1
                        [created_at] => 0000-00-00 00:00:00
                        [updated_at] => 0000-00-00 00:00:00
                        [type] => 1
                        [description] => 
                    )

                [relations:protected] => Array
                    (
                    )

                [hidden:protected] => Array
                    (
                    )

                [visible:protected] => Array
                    (
                    )

                [appends:protected] => Array
                    (
                    )

                [guarded:protected] => Array
                    (
                        [0] => *
                    )

                [dates:protected] => Array
                    (
                    )

                [touches:protected] => Array
                    (
                    )

                [observables:protected] => Array
                    (
                    )

                [with:protected] => Array
                    (
                    )

                [morphClass:protected] => 
                [exists] => 1
            )

    )

)

转换为json,房间字段应该是一个数组而不是一个对象:

{"other_parameters": "something","rooms":{"1":{"id":2,"properties_id":4,"price":350000,"is_available":1,"created_at":"-0001-11-30 00:00:00","updated_at":"2014-10-21 18:13:15","type":1,"description":null},"2":{"id":3,"properties_id":4,"price":250000,"is_available":1,"created_at":"-0001-11-30 00:00:00","updated_at":"-0001-11-30 00:00:00","type":1,"description":""}}}

解决方法:

我在laravel文档中找到了一个解决方案.

修改数组之后,你必须从laravel集合中调用一个名为values()的方法来安排数组索引,例如:

unset($property->rooms[$key]);
$property->rooms->values();

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...