Laravel – Filament: получить отдельные значения столбца отношений

Я использую конструктор форм Laravel Filament 3.x, где хочу выбирать только клиентов с разными именами.

Я попробовал это, но оно отображает всех клиентов, включая тех, у кого такое же first_name:

 Select::make('client_id')
      ->relationship('client', 'first_name', 
           fn (Builder $query) => $query->distinct()),

Есть какие-нибудь подсказки, как достичь цели?

Вот ссылка на Конструктор форм.

Вот Elquent Builder.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
323
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать groupBy, который дает тот же результат с разными при использовании построителя запросов.

Select::make('client_id')
  ->relationship('client', 'first_name', 
       fn (Builder $query) => $query->groupBy('first_name')),

Спасибо, но это приводит к ошибке, потому что Builder::groupby() не существует.

Billal Begueradj 17.04.2024 05:40

@BillalBegueradj laravel.com/api/11.x//Illuminate/Database/Query/…

Daedalus 17.04.2024 07:01

Это должно сработать, я попробовал это в своем собственном коде. оно работает. Пожалуйста, проверьте верхний раздел вашего файла на наличие этого файла: Illuminate\Database\Eloquent\Builder.

myildiz 17.04.2024 07:02

Кажется, ваше решение подойдет для groupBy. На этом этапе я получаю другую ошибку, связанную с настройками MySQL при использовании оператора GROUP BY. Поэтому на данный момент я не могу протестировать этот подход. Но я обещаю вернуться к вам после того (и если) выясню, как исправить соответствующее сообщение об ошибке.

Billal Begueradj 17.04.2024 13:04

Я изменил свой механизм базы данных, потому что мой текущий жалуется на проблему с GROUP BY, которая не должна существовать, учитывая ее версию и настройки по умолчанию. Итак, я принимаю и поддерживаю ваш ответ, он действителен.

Billal Begueradj 17.04.2024 18:56

Другие вопросы по теме