讨论数量:
数据不应该是一个大的实体,而是有层次感的实体,同理,关系型数据库就是实体之间的关系,模型之间的关系,映射到ORM,但是你的功能可以在appends实现这,不过不推荐
定义了关系后,在获取器里可以这样获取吧
public function getNicknameAttribute()
{
return optional($this->parent)->nickname ?? '';
}
可在你的 Model
基类新增一个方法:
/**
* 格式化为一个扁平的数组
*
* @return array
*/
public function toCollapse()
{
$result = $this->attributesToArray();
foreach ($this->relationsToArray() as $relations => $item) {
foreach ($item as $k => $v) {
isset($result[$k]) && $k = $relations . '_' . $k;
$result[$k] = $v;
}
}
return $result;
}
调用:
$brand = Brand::with('tran')->find(9);
dd($brand->toCollapse());
得到类似输出:
array:11 [
"id" => 9
"icon" => ""
"created_at" => 1647844552
"updated_at" => 1647844552
"tran_id" => 59
"brand" => "BMW"
"first_letter" => "B"
"brand_id" => 9
"language" => "en"
"tran_created_at" => 1648281558
"tran_updated_at" => 1648281558
]
推荐文章: