Laravel collection - метод filter (), устанавливающий пользовательское свойство - PullRequest
0 голосов
/ 22 марта 2020

Я создал пользовательский класс коллекции, который расширяет laravel класс коллекции. У этой пользовательской коллекции есть некоторые данные, определяющие методы обработки c, и свойство, облегчающее мою жизнь.

use Illuminate\Support\Collection;

class CustomCollection extends Collection
{
    public bool $myProperty = true;

    public function filterBasedOnCustomStuff()
    {
        return $this->filter(function ($row)
        {
            // Some custom sorcerry
            return ($var === "whatever");
        });
    }
}

И мой вопрос. Когда я вызываю filterBasedOnCustomStuff() метод, он возвращает новый объект CustomCollection. Что я и хочу, конечно. Но я также хотел бы установить значение параметра $myProperty нового экземпляра коллекции. Возможно ли это, или я должен сделать это позже? Примерно так:

$newCollection = $oldCollection->filterBasedOnCustomStuff();
$newCollection->myProperty = $oldCollection->myProperty;

Я бы хотел избежать этого подхода к его последующей настройке, если это возможно.

Заранее спасибо.

1 Ответ

1 голос
/ 22 марта 2020

Я бы просто использовал переменную для хранения отфильтрованного экземпляра:

<?php
use Illuminate\Support\Collection;

class CustomCollection extends Collection
{
    public bool $myProperty = true;

    public function filterBasedOnCustomStuff()
    {
        $filtered = $this->filter(function ($row)
        {
            // Some custom sorcerry
            return ($var === "whatever");
        });

        $filtered->myProperty = $this->myProperty;

        return $filtered;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...