我有一个存储数据的控制器。这使用表单Request和在Trait上显示消息之后。我在3 API上使用相同的特性,但我想知道是否可以发送/添加到每个API的自定义消息的json /数组。例如,如果根据API创建了类别(类别创建成功,产品创建成功)。 这是我控制器上的商店
public function store(StoreCategory $request)
{
$data = request()->all();
$newCategory = Category::create($data);
return $this->respondCreated(new CategoryResource($newCategory));
}
我正在使用像Resource这样的CategoryResource 这是我的特质
public function respondCreated($data)
{
return $this->setStatusCode(IlluminateResponse::HTTP_CREATED)->respond($data
->response()
);
}
public function respond($data, $headers = [])
{
$response = $data;
return $response->setStatusCode($this->statusCode);
}
CategoryResource代码:
public function toArray($request) {
return [ 'id' => $this->id,
'name' => $this->name,
'parent_id' => $this->parent_id,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
是否可以为每个Api请求添加自定义消息?可以从控制器传递变量,并在添加自定义消息后将变量添加到数组中吗?
最诚挚的问候 对不起我的英语不好
答案 0 :(得分:0)
您可以通过直接向模型添加属性来实现此目的:link
有时,在将模型转换为数组或JSON时,您可能希望添加数据库中没有相应列的属性。为此,首先为值定义一个访问器:
public function getHasMessageAttribute()
{
return "the message that you want to pass";
}
创建访问者后,将属性名称添加到模型的appends属性中。请注意,属性名称通常在“snake case”中引用,即使访问者是使用“camel case”定义的:
{
/**
* The accessors to append to the model's array form.
*
* @var array
*/
protected $appends = ['has_message'];
}
离开这里有很多方法但是;
最后通过CategoryResource传递消息
'message'=> $this->has_message,
如果您想将其与数据库条目分开,则可以始终使用with。