我试图找出一个属性是否被选中,如果它被选中,则将其合并到 API 资源中。
可以说我有这样的事情:
$postA = Post::where('id', $id)->select(['id', 'title'])->firstOrFail()
$postB = Post::where('id', $id)->select(['id', 'subtitle'])->firstOrFail()
并且它们都将使用相同的 API 资源:
return PostResource($postA);
OR
return PostResource($postB);
然后在 API 资源中,我试图检查是否在select语句中选择了属性:
class PostResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->when(property_exists($this, 'title'), $this->title),
'subtitle' => $this->when(property_exists($this, 'subtitle'), $this->subtitle)
// Other fields and relations
];
}
}
但 property_exists 不起作用,它总是返回false。为什么?我该如何解决这个问题?
慕娘9325324