include 资源为 null 时如何处理?
rt,想请问下老师,假如示例中的topic的user_id字段为空时,转换数据就会报错,遇到这种情况应该如何处理?
自己描述不清楚,下面详细说明:
设计user表中有parent_id字段,有的会员会有上级,但是顶级会员的parent_id会为null或者0.
class UserTransformer extends TransformerAbstract
{
protected $availableIncludes = ['parent'];
public function transform(User $user)
{
return [
'id' => $user->id,
'name' => $user->name,
'nick_name' => $user->nick_name,
'parent_id' => $user->parent_id,
];
}
public function includeParent(User $user)
{
return $this->item($user->parent, new static());
}
}
这是初始的transformer代码,访问下级会员显示正常:
{
"id": 2,
"name": "vega02",
"nick_name": "vega02",
"parent_id": 1,
"parent": { // 这里数据类型为字典
"id": 1,
"name": "vega01",
"nick_name": "vega01",
"parent_id": null
}
}
访问顶级会员会报错:
"message": "Argument 1 passed to App\\Transformers\\UserTransformer::transform() must be an instance of App\\Models\\User, null given, called in /home/vagrant/code/wuti_api/vendor/league/fractal/src/Scope.php on line 407"
修改transformer后的代码,解决报错:
...
protected $availableIncludes = ['parent'];
public function transform(User $user=null)
{
if (!$user) return [];
return [
'id' => $user->id,
'name' => $user->name,
'nick_name' => $user->nick_name,
'parent_id' => $user->parent_id,
];
}
...
返回数据:
{
"id": 1,
"name": "vega01",
"nick_name": "vega01",
"parent_id": null,
"parent": [] // # 这里数据为数组
}
因为修改之后的parent数据类型会出现不一致的情况,对于app之类处理是比较麻烦的,所以想请问下老师有比较好的解决办法吗?
推荐文章: