Назвать фреймворк Laravel 5.4 hasManyTrough на неопределенное способ осветить\базы данных\запросы\конструктор::hasManyTrough()'


Назвать фреймворк Laravel 5.4 hasManyTrough на неопределенное способ осветить\базы данных\запросы\конструктор::hasManyTrough()'

02.04.2017 08:11:16 Просмотров 84 Источник

Я изо всех сил пытаюсь понять, где я ошибся. Это было легко, я следовал инструкциям Ларавеля. https://laravel.com/docs/5.4/eloquent-relationships#has-many-through , но очевидно, что мне нужен кто-то более знакомый с этим видом кода, так как всякий раз, когда я пытаюсь получить $stagingsystem-stagesubtype, я получаю ошибку

BadMethodCallException с сообщением ' вызов неопределенного метода >Illuminate\Database\Query\Builder:: hasManyTrough()'

Может кто-нибудь помочь?

StagingSystems

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateStagingSystemsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('staging_systems', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name')->unique();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('staging_systems');
    }
}

Сценический псевдоним

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateStageNamesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('stage_names', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('staging_system_id')->unsigned();
            $table->foreign('staging_system_id')->references('id')->on('staging_systems');

            $table->string('name')->unique;
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('stage_names');
    }
}

StageSubType

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateStageSubTypesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('stage_sub_types', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('stage_name_id')->unsigned();
            $table->foreign('stage_name_id')->references('id')->on('stage_names');
            $table->string('name');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('stage_sub_types');
    }
}

МОДЕЛИ

StagingSystem

<?php

namespace App;

use App\StagingSystem;
use Illuminate\Database\Eloquent\Model;

class StagingSystem extends Model
{
    protected $guarded = ['id'];

    public function stagename()
    {
        return $this->hasMany('App\StageName');
    }

    public function stagesubtype()
    {
        return $this->hasManyTrough('App\StageSubType','App\StageName');
    }

}

Сценический псевдоним

<?php

namespace App;

use App\StageName;
use Illuminate\Database\Eloquent\Model;

class StageName extends Model
{
  protected $guarded = ['id'];

    public function stagingsystem()
    {
        return $this->belongsTo('App\StagingSystem','id');
    }

    public function stagesubtype()
    {
        return $this->hasMany('App\StageSubType');
    }

}

StageSubType

<?php

namespace App;

use App\StageSubType;
use Illuminate\Database\Eloquent\Model;

class StageSubType extends Model
{
      protected $guarded = [
        'id'
    ];

    public function stagename()
    {
        return $this->belongsTo('App\StageName');
    }

     public function stagingsystem()
    {
        return $this->belongsTo('App\StagingSystem');
    }


}
У вопроса есть решение - Посмотреть?

Ответы - Назвать фреймворк Laravel 5.4 hasManyTrough на неопределенное способ осветить\базы данных\запросы\конструктор::hasManyTrough()' / Laravel 5.4 hasManyTrough 'Call to undefined method Illuminate\Database\Query\Builder::hasManyTrough()'

Является ответом!
Mihai

02.04.2017 08:49:21

HasManyThrough-это не то же самоеhasManyTrough

https://stackoverflow.com/questions/43171121/laravel-5-4-hasmanytrough-call-to-undefined-method-illuminate-database-query-bu/43171527#comment73417763_43171527
Я не совсем понимаю, что вы имеете в виду. Страница в виде ссылки говорит, что имя и использование-hasManyThrough. Может, объяснишь еще что-нибудь?
https://stackoverflow.com/questions/43171121/laravel-5-4-hasmanytrough-call-to-undefined-method-illuminate-database-query-bu/43171527#comment73417833_43171527
@rpz посмотрите внимательнее, у вас есть ошибка в написании.
https://stackoverflow.com/questions/43171121/laravel-5-4-hasmanytrough-call-to-undefined-method-illuminate-database-query-bu/43171527#comment73417980_43171527
Именно эти комы и орфографические ошибки сводят меня с ума. Спасибо @Mihai за свежую пару глаз!
RonnyKnoxville

21.02.2020 12:29:50

Для любого, кто столкнется с подобной проблемой, это сообщение об ошибке может появиться, если вы пытаетесь получить доступ к отношениям моделей с помощью withPivot(), но промежуточное отношение расширяет Modelвместо Pivot.

Помочь в развитии проекта:
Закрыть X