laravel - Как я могу получить информацию о пользователях каждого комментария - PullRequest
0 голосов
/ 01 июня 2018

У меня есть эти модели:

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

class Comment extends Model
{
    protected $primaryKey = 'comment_id';

    public function post()
    {
        return $this->belongsTo(Post::class, 'post_id');
    }
}

class User extends Authenticatable
{
    protected $primaryKey = 'user_id';
    public function comments()
    {
        return $this->hasMany(Comment::class, 'user_id', 'commenter_id');
    }
}

class MyController extends Controller
{
    public function post($id = null)
    {
        $post = Post::where('post_id', $id)->first();
        $comments = $post->comments;
    }
}

Я хочу, чтобы пользователь каждого комментария получал что-то вроде $post->comments->user, чтобы легко получить информацию о пользователе, как показано ниже:

@foreach($post->comments as $comment)
    {{ $comment->user->first_name.' '.$comment->user->last_name }}
@endforeach

Как я могу это сделать?Я думаю, мне нужно что-то с именем hasManyThrough, но это слишком сложно, и я запутался: |

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Просто создайте в вашей модели комментариев функцию, которая должна возвращать отношение, подобное этому

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

, а затем вызовите эту функцию для объекта комментария

0 голосов
/ 01 июня 2018

Да, вы можете получить объект пользователя с объектом комментария, используя

$post = Post::with('comments.user')->where('post_id', $id)->first();

и определить отображение для пользователя в моделях комментариев

class Comment extends Model
{
    protected $primaryKey = 'comment_id';

    public function post()
    {
        return $this->belongsTo(Post::class, 'post_id');
    }

    public function user()
    {
        return $this->belongsTo(User::class, 'user_id');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...