Многие ко многим рюкзак Laravel?

#laravel #laravel-backpack

#laravel #laravel-рюкзак

Вопрос:

У меня есть отношения » много ко многим» между таблицей shops и users .Итак, чтобы создать новый магазин, я хочу назначить пользователей для этого магазина, но у меня есть Error: Call to undefined method AppModelsShop::user() ошибка, когда я пытаюсь создать новый магазин.

У меня есть внутренняя setupCreateOperation функция в ShopCrudController этом коде :

 protected function setupCreateOperation()
    {
        CRUD::setValidation(ShopRequest::class);

        $this->crud->addFields([
            ...
            [
                'name'  => 'user_id',
                'label' => 'Owners',
                'type' => 'select2_multiple',
                'entity' => 'user',
                'attribute' => 'firstname',
                'model' => "AppModelsUser",
                'pivot'     => true,
                'options'   => (function ($query) {
                    return $query->orderBy('name', 'ASC')->where('depth', 1)->get();
                }),
            ],

        ]); 

И магазин моделей :

 <?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
use BackpackCRUDappModelsTraitsCrudTrait;

class Shop extends Model
{
    use HasFactory;
    use CrudTrait;

    ...

    public function users()
    {
        return $this->belongsToMany('AppModelsUser','shop_user')->withTimestamps();
    }
} 

И модель пользователя :

 <?php

namespace AppModels;

use BackpackCRUDappModelsTraitsCrudTrait;
use ParentalHasParent;
use BackpackCRUDappNotificationsResetPasswordNotification as ResetPasswordNotification;
use IlluminateFoundationAuthUser as Authenticatable;
use IlluminateNotificationsNotifiable;
use LaravelPassportHasApiTokens;
use SpatiePermissionTraitsHasRoles;
use IlluminateDatabaseEloquentFactoriesHasFactory;

class User extends Authenticatable
{
    use Notifiable, HasApiTokens;

    use HasParent;
    use CrudTrait;
    use HasRoles;
    use HasFactory;

    ...

    public function shops()
    {
        return $this->belongsToMany('AppModelsShop', 'shop_user')->withTimestamps();
    }
} 

Ответ №1:

Я допустил опечатку 'entity' => 'user' вместо 'entity' => 'users'