Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

aurorame's avatar

How to cast json column to array answer from API?

Eloquent:

    protected $fillable = [
        'name',
        'nickname',
        'server',
    ];

     protected $hidden = [
        'email',
        'token'
    ];

    protected $casts = [
        'server' => 'array'
    ];

migration:

$table->json('server');

And API return me this:

"server": "[1, 5]",

How i can correctly cast it to array?

0 likes
5 replies
Sinnbeck's avatar

Show the controller code as well. Maybe you arent using eloquent.

1 like
aurorame's avatar

@Sinnbeck Controller:

    public function show($id)
    {
        return new UserResource(User::where('id', $id)->first());
    }

Resource:

public function toArray($request)
    {
        return [
                'id' => $this->id,
                'name' => $this->name,
                'server' => $this->server,
        ];
    }
Sinnbeck's avatar

@aurorame Maybe its double encoded. How are you saving the User (server column)?

1 like
aurorame's avatar

@Sinnbeck

$user = User::create([
                'server' => json_encode([0])
            ]);

for example above:

$user = User::create([
                'server' => json_encode([1, 5])
            ]);
Sinnbeck's avatar
Sinnbeck
Best Answer
Level 102

@aurorame There you go. Laravel already runs json_encode, so you are encoding it twice

$user = User::create([
                'server' => [1, 5]
            ]);
1 like

Please or to participate in this conversation.