首页 > 解决方案 > 如何在 Laravel 中获取类别和子类别 Query Builder

问题描述

再会。我正在根据下表设计一个 API。我正在使用的数据库是一个设计不佳的遗留数据库。

现在,标题属于一个类别。Like, Title, B, C, D 在 Cat B 下。所以,想返回两个节点。节点 1 - 返回所有类别,节点 2 - 返回类别下所有标题的数组。

我正在使用 Laravel 查询生成器。我可以使用下面的代码获取类别。现在的问题是获得它下面的标题。

$rows = DB::connection('mysql3')
            ->table('tbl_form')
            ->selectRaw("DISTINCT UPPER(LTRIM(`type`)) as category")
            ->where('deleted', 0)
            ->orderBy('category', 'asc')
            ->get();

请问,实现这一目标的最佳方法是什么?

标签: phpmysqldatabaselaravellaravel-query-builder

解决方案


我会选择雄辩的模型

class Category extends Model
{
    protected $table = 'tbl_form'; // 'posts'

    public function posts()
    {
        return $this->hasMany(Post::class, 'category', 'category')->select(['title']);
    }
}
class Post extends Model
{
    protected $table = 'tbl_form'; // 'posts'

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

并像这样检索它:

$categories = Category::all();
dd($categories[0]->posts);

推荐阅读