Как я могу изменить значение свойства коллекции в Laravel? - PullRequest
0 голосов
/ 09 мая 2019

Моя коллекция:

 ($usersWithCommission) Illuminate\Support\Collection {#2625
  #items: array:2 [
    0 => array:3 [
      "userId" => 1
      "name" => "Sim Aufderhar"
      "net_commission" => null
    ]
    1 => array:3 [
      "userId" => 2
      "name" => "Carolyn Lang III"
      "net_commission" => null
    ]
  ]
}

Я хотел бы изменить свойство net_commission, но не могу:

foreach ($soldProperties as $property) {
            if (!$property->buyer_user_id && !$property->seller_transferring_user_id) {
                $usersWithCommission->where('userId', $property->user_id)->first()['net_commission'] += $property->net_commission_of_sold;
            }
        }

Как я могу?Спасибо за ваши ответы.

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Коллекции предоставляют метод map, который позволяет выполнять итерацию вашей коллекции и добавлять / изменять поля.

function modify_net_commision($var) {
   return YOUR_LOGIC_HERE;
}

$collection = [
   [ "userId" => 1, "name" => "Sim Aufderhar", "net_commission" => null ],
   [ "userId" => 2, "name" => "Carolyn Lang III", "net_commission" => null ],
];

$external_var = 'I will be used on modify_net_commision function';

$new_collection = collect($collection)->map(function ($arr) use ($external_var) {
    $arr['net_commission'] = modify_net_commision($external_var);
    return $arr;
})

Если вы хотите удалить некоторые поля из вашей коллекции, используйте метод reject.

Док: https://laravel.com/docs/5.8/collections

Надеюсь, это поможет вам.

Хорошего дня.

0 голосов
/ 10 мая 2019
public function test()
{
    $collection = [
        [ "userId" => 1, "name" => "Sim Aufderhar", "net_commission" => null ],
        [ "userId" => 2, "name" => "Carolyn Lang III", "net_commission" => null ],
     ];
      $data= collect($collection)->map(function($collection, $key) {
       $collect = (object)$collection;
       return [
            'userId' => $collect->userId,
            'name' => $collect->name,
            'net_commission' => $this->modify_commision($key)
       ];
   });

  dd($data);
}

public function modify_commision($key) {
    $property = [
        ['userId' => 1 ,'net_commission_of_sold' => 30],
        ['user_id' => 2,'net_commission_of_sold' => 40]
    ];
    return $property[$key]['net_commission_of_sold'];
 }

 ***Hope it helps you***
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...