Поле BelongsTo предназначено для работы с отношением того же имени в Laravel и включает все базовые методы.
Для создания этого поля используйте статический метод make().
BelongsTo::make(
Closure|string $label,
?string $relationName = null,
Closure|string|null $formatted = null,
?ModelResource $resource = null
)
BelongsTo::make(
Closure|string $label,
?string $relationName = null,
Closure|string|null $formatted = null,
?ModelResource $resource = null
)
BelongsTo::make(
Closure|string $label,
?string $relationName = null,
Closure|string|null $formatted = null,
?ModelResource $resource = null
)
BelongsTo::make(
Closure|string $label,
?string $relationName = null,
Closure|string|null $formatted = null,
?ModelResource $resource = null
)
BelongsTo::make(
Closure|string $label,
?string $relationName = null,
Closure|string|null $formatted = null,
?ModelResource $resource = null
)
$label - метка, заголовок поля,
$relationName - имя отношения,
$formatted - замыкание или поле в связанной таблице для отображения значений,
$resource - ресурс модели, на который ссылается отношение.
Наличие ресурса модели, на который ссылается отношение, обязательно!
Ресурс также необходимо зарегистрировать в сервис-провайдере MoonShineServiceProvider в методе menu() или resources(). В противном случае будет ошибка 404.
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
];
}
//...

Если вы не указываете $relationName, тогда имя отношения будет определено автоматически на основе $label.
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
];
}
//...
Вы можете опустить $resource, если ресурс модели соответствует имени отношения.
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Country', 'country')
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country')
];
}
//...
По умолчанию для отображения значения используется поле в связанной таблице, которое указано свойством $column в ресурсе модели.
Аргумент $formatted позволяет переопределить это.
namespace App\MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class CountryResource extends ModelResource
{
public string $column = 'title';
}
namespace App\MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class CountryResource extends ModelResource
{
//...
public string $column = 'title';
//...
}
namespace App\MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class CountryResource extends ModelResource
{
//...
public string $column = 'title';
//...
}
namespace App\MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class CountryResource extends ModelResource
{
//...
public string $column = 'title';
//...
}
namespace App\MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class CountryResource extends ModelResource
{
//...
public string $column = 'title';
//...
}
Если вам нужно указать более сложное значение для отображения, тогда в аргумент $formatted можно передать функцию обратного вызова.
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make(
'Country',
'country',
fn($item) => "$item->id. $item->title"
)
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make(
'Country',
'country',
fn($item) => "$item->id. $item->title"
)
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make(
'Country',
'country',
fn($item) => "$item->id. $item->title"
)
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make(
'Country',
'country',
fn($item) => "$item->id. $item->title"
)
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make(
'Country',
'country',
fn($item) => "$item->id. $item->title"
)
];
}
//...
При использовании поля BelongsTo для сортировки или фильтрации позиций необходимо методом setColumn() установить поле в таблице базы данных или переопределить метод sorting у ресурса модели.
Если вам нужно изменить column при работе с моделями, используйте метод onAfterFill
BelongsTo::make(
'Category',
resource: new CategoryResource()
)->afterFill(fn($field) => $field->setColumn('changed_category_id'))
BelongsTo::make(
'Category',
resource: new CategoryResource()
)->afterFill(fn($field) => $field->setColumn('changed_category_id'))
BelongsTo::make(
'Category',
resource: new CategoryResource()
)->afterFill(fn($field) => $field->setColumn('changed_category_id'))
BelongsTo::make(
'Category',
resource: new CategoryResource()
)->afterFill(fn($field) => $field->setColumn('changed_category_id'))
BelongsTo::make(
'Category',
resource: new CategoryResource()
)->afterFill(fn($field) => $field->setColumn('changed_category_id'))
Вы можете использовать метод default(), если вам нужно указать значение по умолчанию для поля.
default(mixed $default)
default(mixed $default)
default(mixed $default)
default(mixed $default)
default(mixed $default)
Вы должны передать объект модели в качестве значения по умолчанию.
use App\Models\Country;
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->default(Country::find(1))
];
}
use App\Models\Country;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->default(Country::find(1))
];
}
//...
use App\Models\Country;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->default(Country::find(1))
];
}
//...
use App\Models\Country;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->default(Country::find(1))
];
}
//...
use App\Models\Country;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->default(Country::find(1))
];
}
//...
Как и для всех полей, если вам нужно сохранить NULL, необходимо добавить метод nullable()
nullable(Closure|bool|null $condition = null)
nullable(Closure|bool|null $condition = null)
nullable(Closure|bool|null $condition = null)
nullable(Closure|bool|null $condition = null)
nullable(Closure|bool|null $condition = null)
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->nullable()
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->nullable()
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->nullable()
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->nullable()
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->nullable()
];
}
//...

MoonShine - очень удобный и функциональный инструмент. Однако, чтобы его использовать, вам нужно быть уверенным в основах Laravel.
Не забудьте указать в таблице базы данных, что поле может принимать значение Null.
Метод placeholder() позволяет установить атрибут placeholder на поле.
placeholder(string $value)
placeholder(string $value)
placeholder(string $value)
placeholder(string $value)
placeholder(string $value)
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Country', 'country')
->nullable()
->placeholder('Country')
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country')
->nullable()
->placeholder('Country')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country')
->nullable()
->placeholder('Country')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country')
->nullable()
->placeholder('Country')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country')
->nullable()
->placeholder('Country')
];
}
//...
Если вам нужно искать среди значений, необходимо добавить метод searchable().
use MoonShine\Fields\BelongsTo;
use App\MoonShine\Resources\CountryResource;
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', new CountryResource())
->searchable()
];
}
use MoonShine\Fields\BelongsTo;
use App\MoonShine\Resources\CountryResource;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', new CountryResource())
->searchable()
];
}
//...
use MoonShine\Fields\BelongsTo;
use App\MoonShine\Resources\CountryResource;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', new CountryResource())
->searchable()
];
}
//...
use MoonShine\Fields\BelongsTo;
use App\MoonShine\Resources\CountryResource;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', new CountryResource())
->searchable()
];
}
//...
use MoonShine\Fields\BelongsTo;
use App\MoonShine\Resources\CountryResource;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', new CountryResource())
->searchable()
];
}
//...
Метод creatable() позволяет создать новый объект отношения через модальное окно.
creatable(
Closure|bool|null $condition = null,
?ActionButton $button = null,
)
creatable(
Closure|bool|null $condition = null,
?ActionButton $button = null,
)
creatable(
Closure|bool|null $condition = null,
?ActionButton $button = null,
)
creatable(
Closure|bool|null $condition = null,
?ActionButton $button = null,
)
creatable(
Closure|bool|null $condition = null,
?ActionButton $button = null,
)
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Author', resource: new AuthorResource())
->creatable()
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Author', resource: new AuthorResource())
->creatable()
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Author', resource: new AuthorResource())
->creatable()
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Author', resource: new AuthorResource())
->creatable()
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Author', resource: new AuthorResource())
->creatable()
];
}
//...

Вы можете настроить кнопку создания, передав параметр button в метод.
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Author', resource: new AuthorResource())
->creatable(
button: ActionButton::make('Custom button', '')
)
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Author', resource: new AuthorResource())
->creatable(
button: ActionButton::make('Custom button', '')
)
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Author', resource: new AuthorResource())
->creatable(
button: ActionButton::make('Custom button', '')
)
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Author', resource: new AuthorResource())
->creatable(
button: ActionButton::make('Custom button', '')
)
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Author', resource: new AuthorResource())
->creatable(
button: ActionButton::make('Custom button', '')
)
];
}
//...
Метод valuesQuery() позволяет изменить запрос для получения значений.
valuesQuery(Closure $callback)
valuesQuery(Closure $callback)
valuesQuery(Closure $callback)
valuesQuery(Closure $callback)
valuesQuery(Closure $callback)
use Illuminate\Contracts\Database\Eloquent\Builder;
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Category', 'category', resource: new CategoryResource())
->valuesQuery(fn(Builder $query, Field $field) => $query->where('active', true))
];
}
use Illuminate\Contracts\Database\Eloquent\Builder;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Category', 'category', resource: new CategoryResource())
->valuesQuery(fn(Builder $query, Field $field) => $query->where('active', true))
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Category', 'category', resource: new CategoryResource())
->valuesQuery(fn(Builder $query, Field $field) => $query->where('active', true))
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Category', 'category', resource: new CategoryResource())
->valuesQuery(fn(Builder $query, Field $field) => $query->where('active', true))
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Category', 'category', resource: new CategoryResource())
->valuesQuery(fn(Builder $query, Field $field) => $query->where('active', true))
];
}
//...
Для реализации асинхронного поиска значений используйте метод asyncSearch().
asyncSearch(
string $asyncSearchColumn = null,
int $asyncSearchCount = 15,
?Closure $asyncSearchQuery = null,
?Closure $asyncSearchValueCallback = null,
?string $associatedWith = null,
?string $url = null,
bool $replaceQuery = false,
)
asyncSearch(
string $asyncSearchColumn = null,
int $asyncSearchCount = 15,
?Closure $asyncSearchQuery = null,
?Closure $asyncSearchValueCallback = null,
?string $associatedWith = null,
?string $url = null,
bool $replaceQuery = false,
)
asyncSearch(
string $asyncSearchColumn = null,
int $asyncSearchCount = 15,
?Closure $asyncSearchQuery = null,
?Closure $asyncSearchValueCallback = null,
?string $associatedWith = null,
?string $url = null,
bool $replaceQuery = false,
)
asyncSearch(
string $asyncSearchColumn = null,
int $asyncSearchCount = 15,
?Closure $asyncSearchQuery = null,
?Closure $asyncSearchValueCallback = null,
?string $associatedWith = null,
?string $url = null,
bool $replaceQuery = false,
)
asyncSearch(
string $asyncSearchColumn = null,
int $asyncSearchCount = 15,
?Closure $asyncSearchQuery = null,
?Closure $asyncSearchValueCallback = null,
?string $associatedWith = null,
?string $url = null,
bool $replaceQuery = false,
)
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
->asyncSearch()
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
->asyncSearch()
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
->asyncSearch()
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
->asyncSearch()
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
->asyncSearch()
];
}
//...
Поиск будет осуществляться по полю отношения ресурса column. По умолчанию column=id.
Вы можете передать параметры в метод asyncSearch():
$asyncSearchColumn - поле, по которому осуществляется поиск;
$asyncSearchCount - количество элементов в результатах поиска;
$asyncSearchQuery - функция обратного вызова для фильтрации значений;
$asyncSearchValueCallback - функция обратного вызова для настройки вывода;
$associatedWith - поле, с которым устанавливается связь;
$url - url для обработки асинхронного запроса,
$replaceQuery - заменить запрос.
use Illuminate\Contracts\Database\Eloquent\Builder;
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
->asyncSearch(
'title',
10,
asyncSearchQuery: function (Builder $query, Request $request, Field $field) {
return $query->where('id', '!=', 2);
},
asyncSearchValueCallback: function ($country, Field $field) {
return $country->id . ' | ' . $country->title;
},
'/async'
)
];
}
use Illuminate\Contracts\Database\Eloquent\Builder;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
->asyncSearch(
'title',
10,
asyncSearchQuery: function (Builder $query, Request $request, Field $field) {
return $query->where('id', '!=', 2);
},
asyncSearchValueCallback: function ($country, Field $field) {
return $country->id . ' | ' . $country->title;
},
'/async'
)
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
->asyncSearch(
'title',
10,
asyncSearchQuery: function (Builder $query, Request $request, Field $field) {
return $query->where('id', '!=', 2);
},
asyncSearchValueCallback: function ($country, Field $field) {
return $country->id . ' | ' . $country->title;
},
'/async'
)
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
->asyncSearch(
'title',
10,
asyncSearchQuery: function (Builder $query, Request $request, Field $field) {
return $query->where('id', '!=', 2);
},
asyncSearchValueCallback: function ($country, Field $field) {
return $country->id . ' | ' . $country->title;
},
'/async'
)
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', 'country', resource: new CountryResource())
->asyncSearch(
'title',
10,
asyncSearchQuery: function (Builder $query, Request $request, Field $field) {
return $query->where('id', '!=', 2);
},
asyncSearchValueCallback: function ($country, Field $field) {
return $country->id . ' | ' . $country->title;
},
'/async'
)
];
}
//...
При построении запроса в asyncSearchQuery() вы можете использовать текущие значения формы. Для этого нужно передать Request в callback функцию.
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use MoonShine\Fields\Relationships\BelongsTo;
use MoonShine\Fields\Select;
public function fields(): array
{
return [
Select::make('Country', 'country_id'),
BelongsTo::make('City', 'city', resource: new CityResource())
->asyncSearch(
'title',
asyncSearchQuery: function (Builder $query, Request $request, Field $field): Builder {
return $query->where('country_id', $request->get('country_id'));
}
)
];
}
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use MoonShine\Fields\Relationships\BelongsTo;
use MoonShine\Fields\Select;
//...
public function fields(): array
{
return [
Select::make('Country', 'country_id'),
BelongsTo::make('City', 'city', resource: new CityResource())
->asyncSearch(
'title',
asyncSearchQuery: function (Builder $query, Request $request, Field $field): Builder {
return $query->where('country_id', $request->get('country_id'));
}
)
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use MoonShine\Fields\Relationships\BelongsTo;
use MoonShine\Fields\Select;
//...
public function fields(): array
{
return [
Select::make('Country', 'country_id'),
BelongsTo::make('City', 'city', resource: new CityResource())
->asyncSearch(
'title',
asyncSearchQuery: function (Builder $query, Request $request, Field $field): Builder {
return $query->where('country_id', $request->get('country_id'));
}
)
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use MoonShine\Fields\Relationships\BelongsTo;
use MoonShine\Fields\Select;
//...
public function fields(): array
{
return [
Select::make('Country', 'country_id'),
BelongsTo::make('City', 'city', resource: new CityResource())
->asyncSearch(
'title',
asyncSearchQuery: function (Builder $query, Request $request, Field $field): Builder {
return $query->where('country_id', $request->get('country_id'));
}
)
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use MoonShine\Fields\Relationships\BelongsTo;
use MoonShine\Fields\Select;
//...
public function fields(): array
{
return [
Select::make('Country', 'country_id'),
BelongsTo::make('City', 'city', resource: new CityResource())
->asyncSearch(
'title',
asyncSearchQuery: function (Builder $query, Request $request, Field $field): Builder {
return $query->where('country_id', $request->get('country_id'));
}
)
];
}
//...
При построении запроса в asyncSearchQuery() сохраняется исходное состояние builder.
Если вам нужно заменить его своим builder, тогда используйте флаг replaceQuery.
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use MoonShine\Fields\Relationships\BelongsTo;
use MoonShine\Fields\Select;
public function fields(): array
{
return [
Select::make('Country', 'country_id'),
BelongsTo::make('City', 'city', resource: new CityResource())
->asyncSearch(
'title',
asyncSearchQuery: function (Builder $query, Request $request, Field $field): Builder {
return $query->where('country_id', $request->get('country_id'));
},
replaceQuery: true
)
];
}
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use MoonShine\Fields\Relationships\BelongsTo;
use MoonShine\Fields\Select;
//...
public function fields(): array
{
return [
Select::make('Country', 'country_id'),
BelongsTo::make('City', 'city', resource: new CityResource())
->asyncSearch(
'title',
asyncSearchQuery: function (Builder $query, Request $request, Field $field): Builder {
return $query->where('country_id', $request->get('country_id'));
},
replaceQuery: true
)
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use MoonShine\Fields\Relationships\BelongsTo;
use MoonShine\Fields\Select;
//...
public function fields(): array
{
return [
Select::make('Country', 'country_id'),
BelongsTo::make('City', 'city', resource: new CityResource())
->asyncSearch(
'title',
asyncSearchQuery: function (Builder $query, Request $request, Field $field): Builder {
return $query->where('country_id', $request->get('country_id'));
},
replaceQuery: true
)
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use MoonShine\Fields\Relationships\BelongsTo;
use MoonShine\Fields\Select;
//...
public function fields(): array
{
return [
Select::make('Country', 'country_id'),
BelongsTo::make('City', 'city', resource: new CityResource())
->asyncSearch(
'title',
asyncSearchQuery: function (Builder $query, Request $request, Field $field): Builder {
return $query->where('country_id', $request->get('country_id'));
},
replaceQuery: true
)
];
}
//...
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use MoonShine\Fields\Relationships\BelongsTo;
use MoonShine\Fields\Select;
//...
public function fields(): array
{
return [
Select::make('Country', 'country_id'),
BelongsTo::make('City', 'city', resource: new CityResource())
->asyncSearch(
'title',
asyncSearchQuery: function (Builder $query, Request $request, Field $field): Builder {
return $query->where('country_id', $request->get('country_id'));
},
replaceQuery: true
)
];
}
//...
Для установления связи значений выбора между полями можно использовать метод associatedWith().
associatedWith(string $column, ?Closure $asyncSearchQuery = null)
associatedWith(string $column, ?Closure $asyncSearchQuery = null)
associatedWith(string $column, ?Closure $asyncSearchQuery = null)
associatedWith(string $column, ?Closure $asyncSearchQuery = null)
associatedWith(string $column, ?Closure $asyncSearchQuery = null)
$column - поле, с которым устанавливается связь;
$asyncSearchQuery - функция обратного вызова для фильтрации значений.
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('City', 'city', resource: new CityResource())
->associatedWith('country_id')
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('City', 'city', resource: new CityResource())
->associatedWith('country_id')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('City', 'city', resource: new CityResource())
->associatedWith('country_id')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('City', 'city', resource: new CityResource())
->associatedWith('country_id')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('City', 'city', resource: new CityResource())
->associatedWith('country_id')
];
}
//...
Для более сложной настройки вы можете использовать asyncSearch().
Метод withImage() позволяет добавить изображение к значению.
withImage(
string $column,
string $disk = 'public',
string $dir = ''
)
withImage(
string $column,
string $disk = 'public',
string $dir = ''
)
withImage(
string $column,
string $disk = 'public',
string $dir = ''
)
withImage(
string $column,
string $disk = 'public',
string $dir = ''
)
withImage(
string $column,
string $disk = 'public',
string $dir = ''
)
$column - поле с изображением,
$disk - диск файловой системы,
$dir - директория относительно корня диска.
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make(Country, resource: new CountryResource())
->withImage('thumb', 'public', 'countries')
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make(Country, resource: new CountryResource())
->withImage('thumb', 'public', 'countries')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make(Country, resource: new CountryResource())
->withImage('thumb', 'public', 'countries')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make(Country, resource: new CountryResource())
->withImage('thumb', 'public', 'countries')
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make(Country, resource: new CountryResource())
->withImage('thumb', 'public', 'countries')
];
}
//...

Все опции выбора доступны для изменения через атрибуты data:
use MoonShine\Fields\Relationships\BelongsTo;
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->searchable()
->customAttributes([
'data-search-result-limit' => 5
])
];
}
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->searchable()
->customAttributes([
'data-search-result-limit' => 5
])
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->searchable()
->customAttributes([
'data-search-result-limit' => 5
])
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->searchable()
->customAttributes([
'data-search-result-limit' => 5
])
];
}
//...
use MoonShine\Fields\Relationships\BelongsTo;
//...
public function fields(): array
{
return [
BelongsTo::make('Country', resource: new CountryResource())
->searchable()
->customAttributes([
'data-search-result-limit' => 5
])
];
}
//...
Для получения более подробной информации, пожалуйста, обратитесь к Choices.
Метод native() отключает библиотеку Choices.js и отображает выбор в нативном режиме
BelongsTo::make('Type')->native()
BelongsTo::make('Type')->native()
BelongsTo::make('Type')->native()
BelongsTo::make('Type')->native()
BelongsTo::make('Type')->native()