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()
];
}
 
//...

Обратите внимание, наличие ресурса в таком режиме - обязательный критерий. Однако его можно не указывать, если он не нарушает конвенцию наименований. В таком случае ресурс будет найден автоматически.