HasMany
Вы просматриваете документацию старой версии MoonShine. Рассмотрите возможность обновления вашего проекта до MoonShine 2.x.
Поле для отношений в Laravel типа hasMany
use MoonShine\Fields\HasMany; //...public function fields(): array{ return [ HasMany::make('Comments') ->fields([ ID::make(), BelongsTo::make('Article'), BelongsTo::make('User'), Text::make('Text')->required(), ]) ->removable() ];}//...
Поле ID в методе fields обязательно
Часто бывает, что полей для связи крайне много и в таблице они отображаются мелко и неудобно.
Во многих случаях необходимо выносить такую связь в отдельный ресурс, однако если необходимо
оставить в рамках текущего ресурса, но отобразить поля полноценно, тогда воспользуйтесь
методом fullPage()
, и поля примут стандартный вид

Все же режим table и fullPage больше подойдет для отношений с примитивными полями, такие режимы
не поддерживают поля Json, HasOne, HasMany и многие другие.
Но можно переключить поле в режим ресурса ResourceMode
и тем самым рендерить список связанных записей либо связанную форму
как полноценный ресурс.
Для этого необходимо указать у поля метод resourceMode()
и в таком случае не придется указывать набор полей
в методе fields()
, но вот связанный ресурс с полями будет обязательным
use MoonShine\Fields\HasMany; //...public function fields(): array{ return [ HasMany::make('Расценки', 'prices', new PriceResource()) ->resourceMode() ];} //...
Обратите внимание, наличие ресурса в таком режиме - обязательный критерий. Однако его можно не указывать, если он не нарушает конвенцию наименований. В таком случае ресурс будет найден автоматически.
