Hello everyone I am tring to retrive my Column That have a zerofill specifications with json response but it seems to be that php ignore the zeros in there , so i tried to use str_pad
to do the same work as the zerofill but it's ignore it too !!!
so how can i fix that issue ?
here is my code
public function getGeneralPost(){
$post =Post::inRandomOrder()->orderBy('created_at', 'DESC')->get();
foreach ($post as $item){
$categories = Category::where('id' , $item->post_subtype)->select('category_title')->first();
$categories_type = Category::where('id' , $item->post_type)->select('category_title')->first();
$item->post_subtype = $categories->category_title;
$item->post_type = $categories_type->category_title;
$item->id = str_pad($item->id ,10,'0',STR_PAD_LEFT);// here I am usting str_pad
}
$success['posts'] =$post;
return response()->json(['code'=>'success','success' => $success], $this->successStatus);
}
As already noted in the comments, there seems to be a default cast for the id
column to int
, which will revert your changes done through str_pad()
.
To circumvent the issue, you could either store the padded id
in a separate field which has no cast in place or, instead of altering the object, you could get the attributes of the object, alter them and use them to return your result.
Just from the framework code itself, it might also be possible to override the $keyType
property of your objects before returning them:
public function getGeneralPost() {
$post = Post::inRandomOrder()->orderBy('created_at', 'DESC')->get();
foreach ($post as $item) {
$categories = Category::where('id' , $item->post_subtype)->select('category_title')->first();
$categories_type = Category::where('id' , $item->post_type)->select('category_title')->first();
$item->post_subtype = $categories->category_title;
$item->post_type = $categories_type->category_title;
$item->setKeyType('string');
$item->id = str_pad($item->id ,10,'0',STR_PAD_LEFT);
}
$success['posts'] = $post;
return response()->json(['code'=>'success','success' => $success], $this->successStatus);
}