Привет всем, я пытаюсь получить мою колонку, у которой есть спецификации нулевого заполнения с ответом json, но похоже, что php игнорирует там нули, поэтому я попытался использовать str_pad
сделать ту же работу, что и zerofill, но это тоже игнорировать !!!
так как я могу решить эту проблему?
вот мой код
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);
}
Как уже отмечалось в комментариях, похоже, что по умолчанию id
столбец к int
, который отменит ваши изменения, сделанные через str_pad()
,
Чтобы обойти проблему, вы можете хранить id
в отдельном поле, в котором нет приведений или вместо изменения объекта, вы можете получить атрибуты объекта, изменить их и использовать их для возврата вашего результата.
Просто из сам рамочный код, также возможно переопределить $keyType
Свойство ваших объектов перед их возвратом:
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);
}
Когда вы извлекаете данные, они уже игнорировали нули. Я думаю, что вам нужен аксессуар для этого:
function getIdAttribute($value) {
return str_pad($value, 10, '0', STR_PAD_LEFT);
}
Надеюсь это поможет.