Отношения Laravel в красноречивой модели - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь добавить "простые" отношения в мою модель маршрута, но я, должно быть, что-то упустил, потому что она не работает.

Я хочу, чтобы в моем маршруте было много шагов, и в шагах должен быть только один маршрут, но мой код не находит никаких шагов.Что я пропустил?

таблица маршрутов:

     Schema::create('routes', function (Blueprint $table) {
        $table->increments('id');
        $table->string('uuid')->unique();
        $table->decimal('start_lat', 11, 8);
        $table->decimal('start_lng', 11, 8);
        $table->decimal('end_lat', 11, 8);
        $table->decimal('end_lng', 11, 8);
        $table->string('start_address');
        $table->string('end_address');
        $table->integer('distance');
        $table->integer('duration');
        $table->timestamps();
    });

таблица шагов:

    Schema::create('steps', function (Blueprint $table) {
        $table->increments('id');
        $table->string('uuid')->unique();
        $table->integer('route_id')->unsigned();
        $table->foreign('route_id')->references('id')->on('routes');
        $table->integer('distance');
        $table->integer('duration');
        $table->decimal('start_lat', 11, 8);
        $table->decimal('start_lng', 11, 8);
        $table->decimal('end_lat', 11, 8);
        $table->decimal('end_lng', 11, 8);
        $table->string('instructions');
        $table->text('polyline');
    });

Модель маршрута:

public function steps() {
    return $this->hasMany(Step::class, 'route_id', 'id');
}

Модель шага:

public function route() {
    return $this->belongsTo(Route::class);
}

Как я это называю в контроллере:

    $route = Route::all()->where('id', 1)->first();
    $steps[] = $route->steps();

1 Ответ

0 голосов
/ 27 сентября 2018

Вы, наверное, хотите коллекцию со ступенями?

Но вместо этого вы получите красноречивый steps()

Попробуйте изменить его на:

$steps[] = $route->steps;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...