как отобразить имя пользователя комментария в посте с таблицей отношений - PullRequest
0 голосов
/ 08 ноября 2019

изображение моей реляционной базы данных

{{ \App\User::where('id', $comment->user_id)->value('name') }}

если я использую код, указанный выше

имя пользователя показать во всех сообщениях

моя модель

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Komen extends Model
{
    protected $table='komentar_post';


}

мой контроллер

public function index()
{
    $post=Post::all();
    $comment=Komen::all();
    $user=User::all();

    // dd($id);
    return view('home',compact('post','comment','user'));
}

мой взгляд

@foreach($comments as $cm)
                {{ \App\User::where('id', $cm->user_id)->value('name') }}
                @endforeach

какой запрос corect я должен использовать

1 Ответ

1 голос
/ 08 ноября 2019

Вам необходимо создать отношения в вашей Komen модели. Это что-то вроде этого:

class Komen extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class, 'user_id');
    }
}

Затем вы можете Стремительно загрузить эти отношения при извлечении Komen.

PostsController.php

public function show(Post $post)
{
    $comments = $post->comments()->with('user')->paginate();

    return view('posts.show', compact('comments'));
}

Затем вы можете получить доступ к данным user при отображении каждого комментария:

posts / show.blade.php

@foreach($comments as $comment)
    {{ $comment->user->name }}
@endforeach


{!! $comments->links() !!}

Обновление

Хорошо, если вам нужно отображать комментарии при отображении всех сообщений, сначала вам нужно настроить сообщение relationship!

.php

class Post extends Model
{
    public function comments()
    {
        return $this->hasMany(Komen::class, 'post_id');
    }
}

Komen.php

class Komen extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class, 'user_id');
    }
}

PostsController.php

public function index()
{
    $posts = Post::with('comments.user')->paginate();

    return view('home', compact('posts'));
}

home.blade.php

@foreach($posts as $post)
    @foreach($post->comments as $comment)
        {{ $comment->user->name }}
    @endforeach
@endforeach

{!! $posts->links() !!}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...