繁体   English   中英

Laravel 5中的三张表,有口才的模型

[英]Three tables in Laravel 5 with help Eloquent models

也许这是一个简单的问题,但对我来说,我是Laravel的新手吗,这是问题,所以我有3张桌子

文章,用户,评论。 他们有这种关系 在此处输入图片说明

在页面http://localhost/users/{user_name}我想获取属于该用户的所有文章和所有注释。

三个模型如下所示:

用户

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

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

文章

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

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

评论

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

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

我的Controller Show方法如下所示:

public function show(User $user)
{
    $user->with(['comments','articles'])->get();

    return view('users.show', compact('user', 'comments', 'articles'));
}

鉴于我拥有所需的一切

        {{ dump($user) }}
        {{ dump($user->articles) }}
        {{ dump($user->comments) }}
        {{ dd() }}

在此处输入图片说明

通过foreach,我可以获得所需的属性,但是如何创建链接,在该链接中可以看到文章的链接并向她评论

@foreach($user->comments as $comment)
    <div class="block">
                                         //article title  
        <div><a href="{{ url('articles', $comment->articles->title) }}"></a></div>
        <div>{{ $comment->comment }}</div>
@endforeach

为了显示文章,我使用文章标题而不是ID。

谢谢

首先,这里的'comments''articles'没有任何作用。

return view('users.show', compact('user', 'comments', 'articles'));

至于链接,

<a href="{{ url('articles', [ $comment->article ]) }}">{{ $comment->article->title }}</a>

我解决了这个问题,更新了控制器:

public function show(User $user)
{
    $params = Comment::where('user_id', $user->id)->get()

    return view('users.show', compact('user', 'params'));
}

它的工作方式如我所需要,但我认为有更好的方法来解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM