【问题标题】:Laravel - categories as url segments, category belongs to manyLaravel - 类别作为 url 段,类别属于许多
【发布时间】:2019-08-13 23:16:38
【问题描述】:

我正在创建一个用户可以拥有一个专长的应用程序。 用户可以在后端创建分配给他的专业的帖子,并且必须将其关联到一个类别。

我想知道当医生和律师可以使用相同类别时如何管理类别,而不是显示类别相同的所有专业的所有帖子。

其实:

  • 用户有一个专长

  • 专业有很多类别

  • 分类属于多个专业

我认为我必须创建一个像 category_speciality 这样的支点,正如 Laravel 文档中针对多对多关系所解释的那样。 但是我不知道如何使用专业类别来构建专用查询和网址。

任何帮助都会很棒!

【问题讨论】:

  • 如果你的 Posts 表中有speciality_id,你可以直接使用$category->posts()->where('speciality_id', '=', $user->speciality_id)->get()
  • 好的,我明白了,这是处理查询的好方法!这是构建我的网址的方式吗?我的细分可能是 /specialite_name/articles/category ?

标签: laravel categories


【解决方案1】:

对于 URL,您可以执行以下操作:

web.php

Route::get('/articles/{category}/{specialty}', [
    'uses' => 'PostController@index',
    'as' => 'posts.index'
]);

其中{category}{specialty} 是其标题的唯一slug 字段。这将导致例如example.com/articles/deep-sea/fishing.

后控制器

public function index($categorySlug, $specialtySlug)
{
    $specialty = Specialty::where('slug', '=', '$specialtySlug')->first();

    $posts = Posts::where('specialty_id', '=', $specialty->id)->get();

    return view('posts.index', compact('posts'));
}

假设您在 Posts 表中有 specialty_id 并且您设置了正确的关系。

这只是一个例子。

【讨论】:

  • 好的,非常感谢!我会尝试处理您的解决方案,听起来不错!
猜你喜欢
  • 2017-10-04
  • 1970-01-01
  • 2020-11-15
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 2016-05-28
  • 2015-03-22
相关资源
最近更新 更多