BadMethodCallException:尝试列出类别为laravel的所有合作伙伴

BadMethodCallException:尝试列出类别为laravel的所有合作伙伴,laravel,many-to-many,Laravel,Many To Many,我经历了以下几点: 目标:我想列出所有合作伙伴及其所属类别。基本上,这是一种多对多的关系 代码如下: 合作伙伴类别表迁移 public function up() { Schema::create('partcats', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('partcatnameP')->unique();

我经历了以下几点: 目标:我想列出所有合作伙伴及其所属类别。基本上,这是一种多对多的关系

代码如下: 合作伙伴类别表迁移

 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();
    });
  }
    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();
    });
}
合作伙伴表迁移

 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();
    });
  }
    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();
    });
}
合作伙伴类别迁移

 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();
    });
  }
    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();
    });
}
模型如下所示:

零件猫型号

public function partners()
{
    return $this->belongsToMany('App\Partcat','partner_partcat');
}
 public function partcats()
{
    return $this->belongsToMany('App\Partcat','partner_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调用错误

您可以使用以下方法

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

您可以使用以下方法

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

多对多透视表通常具有与其相关的两个表的id

您发布的合作伙伴类别迁移似乎只包含合作伙伴id。您可能需要添加类别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');
      });
}

多对多数据透视表通常具有与其相关的两个表的id

您发布的合作伙伴类别迁移似乎只包含合作伙伴id。您可能需要添加类别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');
      });
}

杰出的我希望Aniket给出的建议能够在更新和重新运行迁移后解决问题。你还看到错误吗?詹姆斯·克拉克,是的,这是一个很好的答案。现在只需在blade上显示合作伙伴类别列表即可。非常好。我希望Aniket给出的建议能够在更新和重新运行迁移后解决问题。你还看到错误吗?詹姆斯·克拉克,是的,这是一个很好的答案。现在我只想在blade上显示合作伙伴类别的列表。我该如何在blade上显示这个partcats呢?
@foreach($partners->partcats as$partcat){{{$partcat}}@endforeach
我该如何在blade上显示这个partcats呢?
@foreach($partners->partcats as$partcat){{$partcat}}@endforeach