Size: a a a

2020 April 15

EG

Egor Gruzdev in Laravel Pro
Valar Morghulis
Так cast работает с обоих сторон и при set и при get, не?
объяснять долго, сделай json_encode('{ "color": "black" }'); и посмотри на результат, тоже самое сделала и модель с твоей строкой
источник

VM

Valar Morghulis in Laravel Pro
У меня просто апишка получает json, а он как текст соответственно
источник

VM

Valar Morghulis in Laravel Pro
Я так понимаю без сеттера никак
источник

EG

Egor Gruzdev in Laravel Pro
Valar Morghulis
У меня просто апишка получает json, а он как текст соответственно
если у тебя json уже строка, зачем тебе cast
источник

VM

Valar Morghulis in Laravel Pro
Egor Gruzdev
если у тебя json уже строка, зачем тебе cast
Я ожидал на выходе в JsonResource получить в поле не текст, а объект, типа,

Article {
   id: 1,
   data: {
       color: black
   },
   created_at: '...',
   updated_at: '...'
}


А получаю

Article {
   id: 1,
   data: ""{ \"color\": \"black\" }""
   created_at: '...',
   updated_at: '...'
}
источник

AB

Andrey Bogdanov in Laravel Pro
Valar Morghulis
Я ожидал на выходе в JsonResource получить в поле не текст, а объект, типа,

Article {
   id: 1,
   data: {
       color: black
   },
   created_at: '...',
   updated_at: '...'
}


А получаю

Article {
   id: 1,
   data: ""{ \"color\": \"black\" }""
   created_at: '...',
   updated_at: '...'
}
можно просто использовать каст array в модели и заполнять как обычное поле

   protected $casts = [
       'json_data' => 'array',
   ];
источник

VM

Valar Morghulis in Laravel Pro
Andrey Bogdanov
можно просто использовать каст array в модели и заполнять как обычное поле

   protected $casts = [
       'json_data' => 'array',
   ];
Думаешь я так не пробовал? Все равно текст получаю
источник

AB

Andrey Bogdanov in Laravel Pro
если обновить надо будет потом один из ключей, то я так делал
Aricle::forceFill(['json_data->key', $value])->save()
источник

AB

Andrey Bogdanov in Laravel Pro
Valar Morghulis
Думаешь я так не пробовал? Все равно текст получаю
где ты текст получаешь?
источник

VM

Valar Morghulis in Laravel Pro
Когда в браузере обращаюсь к апишке, выдается текст тупо
источник

ML

Mehrob Latipov in Laravel Pro
Valar Morghulis
Думаешь я так не пробовал? Все равно текст получаю
Значит что-то не так делаешь
источник

AB

Andrey Bogdanov in Laravel Pro
а из апишки у тебя ресурс возвращается?
источник

VM

Valar Morghulis in Laravel Pro
Andrey Bogdanov
а из апишки у тебя ресурс возвращается?
Ну да
источник

VM

Valar Morghulis in Laravel Pro
return new ArticleResource($article);
источник

VM

Valar Morghulis in Laravel Pro
это в show методе
источник

AB

Andrey Bogdanov in Laravel Pro
сделай
$request->headers->set('Accept', 'application/json');
источник

AB

Andrey Bogdanov in Laravel Pro
я себе написал ForceJsonMiddleware для этих случаев
источник

AB

Andrey Bogdanov in Laravel Pro
просто подрубаешь его к api роутам и все
источник

VM

Valar Morghulis in Laravel Pro
Andrey Bogdanov
сделай
$request->headers->set('Accept', 'application/json');
В ресурсе я так понимаю?
источник

AB

Andrey Bogdanov in Laravel Pro
Valar Morghulis
В ресурсе я так понимаю?
в контроллере просто первой строкой, но лучше глобально подключить ко всем роутам api
источник