Я использую конструктор форм Laravel Filament 3.x, где хочу выбирать только клиентов с разными именами.
Я попробовал это, но оно отображает всех клиентов, включая тех, у кого такое же first_name
:
Select::make('client_id')
->relationship('client', 'first_name',
fn (Builder $query) => $query->distinct()),
Есть какие-нибудь подсказки, как достичь цели?
Вот ссылка на Конструктор форм.
Вот Elquent Builder.
Вы можете попробовать groupBy, который дает тот же результат с разными при использовании построителя запросов.
Select::make('client_id')
->relationship('client', 'first_name',
fn (Builder $query) => $query->groupBy('first_name')),
@BillalBegueradj laravel.com/api/11.x//Illuminate/Database/Query/…
Это должно сработать, я попробовал это в своем собственном коде. оно работает. Пожалуйста, проверьте верхний раздел вашего файла на наличие этого файла: Illuminate\Database\Eloquent\Builder.
Кажется, ваше решение подойдет для groupBy
. На этом этапе я получаю другую ошибку, связанную с настройками MySQL при использовании оператора GROUP BY
. Поэтому на данный момент я не могу протестировать этот подход. Но я обещаю вернуться к вам после того (и если) выясню, как исправить соответствующее сообщение об ошибке.
Я изменил свой механизм базы данных, потому что мой текущий жалуется на проблему с GROUP BY, которая не должна существовать, учитывая ее версию и настройки по умолчанию. Итак, я принимаю и поддерживаю ваш ответ, он действителен.
Спасибо, но это приводит к ошибке, потому что
Builder::groupby()
не существует.