Как представить MySql Zerofill в ответе JSON

Привет всем, я пытаюсь получить мою колонку, у которой есть спецификации нулевого заполнения с ответом 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);
}

0

Решение

Как уже отмечалось в комментариях, похоже, что по умолчанию 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);
}
1

Другие решения

Когда вы извлекаете данные, они уже игнорировали нули. Я думаю, что вам нужен аксессуар для этого:

function getIdAttribute($value) {
return str_pad($value, 10, '0', STR_PAD_LEFT);
}

Надеюсь это поможет.

1

По вопросам рекламы [email protected]