Как выбрать более правильное решение по коду?

Доброго времени суток! В модели поиска Search.php есть метод для получения массива с именами пользователей для дальнейшего вывода их списком dropdown в шаблоне
public function getDropDownData(): array
   {
        $data = [];

        $query = self::find()->select('id')->distinct()->all();

        foreach ($query as $user) {
            $data[$user->id] = $user->getName();
        }

        return $data;
    }


Нужно помимо имени пользователя вывести название компании рядом в скобках из связанной таблицы. Я доработал метод и сделал так
foreach ($query as $user) {
            $data[$user->id] = $user->getName() . ' (' . $user->company->getName() . ')';
        }

Но мне кажется такой способ не очень красив, так как вдруг понадобится этот список в другом месте, но без имени компании, да и принцип открытости-закрытости нарушается как мне кажется. Подскажите как можно решить эту проблему?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
@KingstonKMS
Сделайте два метода.
1. Имена пользователей
2. Имена пользователей + компании (sql запрос: join с таблицей company)
В цикле только формирование значения из полученных данных
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
revenger
@revenger
49.5
Имхо, сделать две модели: Companies.php и Users.php.
$search = Users::find()->with('Companies')->where([условие])->all();

Дальше разбирать полученный массив.
Рекомендую использовать ArrayHelper
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 10:42
150000 руб./за проект
25 апр. 2024, в 10:41
2000 руб./за проект
25 апр. 2024, в 10:25
2000 руб./за проект