Relationships

In addition to the common fields, Lamotivo supports all of Laravel's relationships.

HasOne

The HasOne field corresponds to a hasOne Eloquent relationship.

use Anyspin\Lamotivo\Fields\HasOne;

HasOne::make(Address::class);

The first argument is a Lamotivo resource class name. Lamotivo will humanize the displayable name and determine automatically the underlying attribute name. You may pass the displayable name and attribute name as the second and third arguments accordingly:

HasOne::make(Address::class, 'Destination', 'address_id');

HasMany

The HasMany field corresponds to a hasMany Eloquent relationship.

use Anyspin\Lamotivo\Fields\HasMany;

HasMany::make(Article::class);

Once the field has been added to your resource, it will be displayed on the resource's details screen.

BelongsTo

The BelongsTo field corresponds to a belongsTo Eloquent relationship.

use Anyspin\Lamotivo\Fields\BelongsTo;

BelongsTo::make(Cart::class);

Title Attributes

When a BelongsTo field is shown on resource creation or update forms, a drop-down list will display the title of the resource. To customize the title of a resource, you may define a title property on the resource class:

public static $title = 'name';

BelongsToMany

The BelongsToMany field corresponds to a belongsToMany Eloquent relationship.

use Anyspin\Lamotivo\Fields\BelongsToMany;

BelongsToMany::make(Ingredient::class);

Once the field has been added to your resource, it will be displayed on the resource's details screen.

Pivot Fields

If your belongsToMany relationship interacts with additional pivot fields, you may also attach those to your BelongsToMany Lamotivo relationship.

BelongsToMany::make(Ingredient::class)
    ->fields(function () {
        return [
            Text::make('amount'),
        ];
    });

Title Attributes

When a BelongsToMany field is shown on resource creation or update forms, a drop-down list will display the title of the resource. To customize the title of a resource, you may define a title property on the resource class:

public static $title = 'name';

MorphOne

The MorphOne field corresponds to a morphOne Eloquent relationship.

use Anyspin\Lamotivo\Fields\MorphOne;

MorphOne::make(Image::class);

MorphMany

The MorphMany field corresponds to a morphMany Eloquent relationship.

use Anyspin\Lamotivo\Fields\MorphMany;

MorphMany::make(Comment::class);

MorphTo

The MorphTo field corresponds to a morphTo Eloquent relationship.

use Anyspin\Lamotivo\Fields\MorphTo;

MorphTo::make('commentable')->types([
    Post::class,
    Video::class,
]);

The first argument is a basic column name, it will be tranformed to _id and _type column names. You may pass a label as the second argument.

The type method is used to instruct MorphTo what resources it may be associated with.

MorphToMany

The MorphToMany field corresponds to a morphToMany Eloquent relationship.

use Anyspin\Lamotivo\Fields\MorphToMany;

MorphToMany::make(Tag::class);

Once the field has been added to your resource, it will be displayed on the resource's details screen.

The behaviour of this field type is quite equal to BelongsToMany.

Searchable Relations

By default, when the BelongsTo, MorphTo, and MorphToMany relationship fields are shown on resource creation or update forms, a simple drop-down list will be displayed.

When you operate with a sufficiently large number of records, you may want to organize the list with a search input control. To use it, just chain searchable method onto the field's definition:

BelongsTo::make(Tag::class)
    ->searchable();