BadMethodCallException: Попытка перечислить всех партнеров с категориями laravel - PullRequest
0 голосов
/ 07 марта 2020

У меня возникает следующее: Цель: я хотел бы перечислить всех партнеров и категории, к которым они принадлежат. По сути, это отношение «многие ко многим».

Ниже приведен код: Миграция таблицы категорий партнеров

 public function up()
  {
    Schema::create('partcats', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('partcatnameP')->unique();
        $table->unsignedBigInteger('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users');
        $table->timestamps();
    });
  }

Миграция таблицы партнеров

    public function up()
   {
    Schema::create('partners', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('partnername');

        $table->string('regnumber')->unique();

        $table->unsignedBigInteger('activestatus_id')->unsigned();
        $table->foreign('activestatus_id')->references('id')->on('activestatuses');

        $table->unsignedBigInteger('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users');
        $table->timestamps();
    });
  }

Partner_Category Migration

    public function up()
{
    Schema::create('partner_partcat', function (Blueprint $table) {
        $table->bigIncrements('id');

        $table->unsignedBigInteger('partner_id')->unsigned();
        $table->foreign('partner_id')->references('id')->on('partners')->onDelete('cascade');



$table->unsignedBigInteger('partcat_id')->unsigned();
            $table->foreign('partcat_id')->references('id')->on('partcats')->onDelete('cascade');


        $table->timestamps();
    });
}

Модели, как показано ниже:

Модель Partcat

public function partners()
{
    return $this->belongsToMany('App\Partcat','partner_partcat');
}

Модель партнера

 public function partcats()
{
    return $this->belongsToMany('App\Partcat','partner_partcat');
}

и Контроллер партнеров, как показано ниже:

    public function index()
{
    //
    $partners = Partner::all()->partcats();

  // dd(Partner::all()->partcats());

    return view('partners.index',['partners'=>$partners]);

}

Здесь я пытаюсь получить список партнеры и связанные с ними категории. Тем не менее, я получаю ошибку вызова BadMethod.

Ответы [ 2 ]

2 голосов
/ 07 марта 2020

Вы можете использовать следующий метод

$partners = Partner::with('partcats')->get();

https://laravel.com/docs/5.6/eloquent-relationships#eager - загрузка

0 голосов
/ 07 марта 2020

У сводной таблицы многие ко многим обычно есть идентификаторы для обеих таблиц, к которым она относится.

Миграция Partner_Category, которую вы разместили, кажется, содержит только partner_id. Возможно, вам придется добавить в category_id.

   public function up()
{
    Schema::create('partner_partcat', function (Blueprint $table) {
        $table->bigIncrements('id');

        $table->unsignedBigInteger('partner_id')->unsigned();
        $table->unsignedBigInteger('partcat_id')->unsigned();

        $table->timestamps();

        $table->foreign('partner_id')->references('id')->on('partners')->onDelete('cascade');
        $table->foreign('partcat_id')->references('id')->on('partcats')->onDelete('cascade');
      });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...