Laravel красноречиво получить подробности из связанной таблицы - PullRequest
0 голосов
/ 06 марта 2020

Я не понимаю, как вернуть информацию обратно на blade template, если у меня есть две связанные таблицы:

Первая таблица стандартная Laravel таблица 'users' Вторая таблица:

Schema::create('recipes', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('code', 10);
    $table->string('description');
    $table->float('size');
    $table->bigInteger('created_by')->unsigned();
    $table->string('status')->default('pending');
    $table->boolean('deleted');
    $table->timestamps();

    $table->foreign('created_by')
        ->references('id')
        ->on('users')
        ->onDelete('cascade');
}

Чем у меня два Controllers: User и Recipe Recipe имеют

public function user()
{
    return $this->belongsTo(\App\User::class);
}

и User имеют

public function recipes()
{
    return $this->hasMany(\App\Recipe::class);
}

фактический выход выглядит следующим образом (RecipesController):

$recipes = Recipe::latest()->paginate($perPage);
return view('admin.recipes.index', compact('recipes'));

все выглядит нормально, но столбец created_by содержит users первичный ключ с целым числом. Как я могу отобразить имя пользователя? Это что-то вроде внутреннего соединения, но возможно ли это сделать красноречиво? Или я совершенно неправильно понимаю эти публичные c функции в Model?

1 Ответ

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

В ваших отношениях с пользователем в вашей модели рецепта отсутствует ForeignKey:

public function user()
{
    return $this->belongsTo(\App\User::class, 'created_by');
}

Затем вы можете загружать пользователей с вашими рецептами в контроллер:

$recipes = Recipe::with('user')->latest()->paginate($perPage);
return view('admin.recipes.index', compact('recipes'));

И, наконец, вы может получить доступ к пользователю в представлении:

@foreach($recipes as $recipe)
    {{ $recipe->user->name }}
@endforeach

Подробнее об обратном отношении «один ко многим» можно прочитать в документах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...