【问题标题】:Get category name from category id laravel从类别 id laravel 获取类别名称
【发布时间】:2017-12-24 21:06:35
【问题描述】:

我对 laravel 很陌生,有两张表,一张帖子表和一张类别表。我只有一个类别与一篇帖子相关,所以我在帖子表中添加了类别 ID。所以现在我想显示所有带有类别名称的帖子。

发布表: id,名称,category_id,状态

分类表: 身份证,姓名

我想显示喜欢 帖子名称 类别名称

我有两个模型类别和帖子,那么我该如何编写雄辩的关系或给我一个简单的方法来获取具有类别名称的帖子数组

【问题讨论】:

标签: php laravel


【解决方案1】:

在您的 Post 模型中:

public function category() {
    return $this->belongsTo(Category::class);
}

现在您可以直接从 Post 模型中使用它

$post = Post::find($id);

$category_name = $post->category->name;

编辑评论中的问题:

您可以通过多种方式按类别名称获取帖子,为了便于使用,我会这样做:

在类别模型中:

public function posts() {
    return $this->hasMany(Post::class);
}

现在您可以通过类别模型获得它:

$category = Category::where('name', $name)->first();

$posts_collection = $category->posts()->get();

【讨论】:

  • 我想获取所有带有类别名称的帖子,以及如何在控制器中编码以返回所有这些值。
【解决方案2】:

在您的 Post 模型上,您可以像这样编写类别关系:

public function category() {
    return $this->belongsTo(Category::class); // don't forget to add your full namespace
}

然后你可以做这样的事情......

$posts = Post::with('category')->get();

这将获取您所属类别的所有帖子。

然后您可以迭代 $posts 变量,例如,使用刀片...

@foreach ($posts as $post)
    <tr>
        <td>{{ $post->name }}</td>
        <td>{{ $post->category->name }}</td>
    </tr>
@endforeach

在此处进一步阅读:https://laravel.com/docs/5.4/eloquent-relationships#defining-relationships

【讨论】:

  • @Niju 你可以通过这个来帮自己一个忙:laracasts.com/series/laravel-from-scratch-2017 它也是免费的!编码愉快!
  • 我还有一个问题,当我添加分页时它不起作用 $posts = Post::with('category')->get()->paginate(5);我也在模型中尝试过
  • 首先,如果回答了您的问题,请将答案标记为正确。您需要使用paginate() 而不是get() 不要同时使用两者。
  • 分页进入控制器,而不是模型。 $posts = Post::with('category')-&gt;paginate(5);
猜你喜欢
  • 2021-10-16
  • 2017-08-02
  • 2013-06-22
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 2016-06-25
相关资源
最近更新 更多