laravel - 在 Eloquent 中将连接数据作为平面数组与子关系返回
问题描述
我有一对多的关系(在我的情况下是递归的)
class Category extends Model
{
use HasFactory;
public $selectable = [
'id', 'category', 'parent_category'
];
public function parent()
{
return $this->belongsTo(Category::class, 'parent_id');
}
public function children()
{
return $this->hasMany(Category::class, 'parent_id');
}
}
我想和他们的孩子一起退货。我正在做的是这样的:
$data = Category::with('children')->get();
但它返回项目集合的数组。列表非常好,但不适用于网格等表格视图。我基本上想返回这样的东西(一个平面数组):
id | category | child_category
------------------------------------
1 | cat1 | subcat1
------------------------------------
1 | cat1 | subcat2
------------------------------------
1 | cat1 | subcat3
------------------------------------
2 | cat2 | subcat4
我知道我可以使用自定义查询生成器,但出于特定原因我正在尝试使用 Eloquent。
我还尝试将列名传递给关系(认为这可能让我更接近解决方案),如下所示:
$data = Category::with('children: category')->get();
但它甚至给了我一个错误:
Unknown column ' category'
我试过了toArray()
,flatten()
但它们没有用(或者我没有以正确的方式使用它们)。这里有什么帮助吗?
解决方案
推荐阅读
- string - 从 stdin 读取时的 Nil 指针取消引用行为
- algorithm - 在 Python 中遍历 DAG,从根目录中查找所有路径
- rest - 如果 http 方法和实现的 CRUD 操作不同,REST api 会发生什么?
- mongodb - 烧瓶应用程序的 Docker 容器可以连接到本地主机 MongoDB
- c++ - 关于具有唯一整数 id 的指针联合的安全性
- javascript - 在多个页面中嵌入具有相同标题的多个页面
- spring - 无法运行 Codestar 生成的 Java Spring 应用
- time-complexity - 证明一个函数的时间复杂度是O(n^3)
- c++ - 用`new`调用默认参数会导致内存泄漏吗?
- sql - 如何使用 SQLite 存储用户创建的列表?