Size: a a a

2020 April 15

AB

Andrey Bogdanov in Laravel Pro
источник

EG

Egor Gruzdev 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: '...'
}
чтобы cast работал как надо, надо на вход (при присвоении поля, создании модели) скормить объект, в твоем случае это будет json_decode('{ "color": "black" }').
в итоге у тебя на выходе при toArray, toJson все будет работать, в том числе и с ресурсами.
источник

AB

Andrey Bogdanov in Laravel Pro
мне кажется ошибка вообще не тут,
здесь нужно просто так делать, передавать массив
$article = Article::create(['data' => ['color'=> 'black']]);


json_decode тебе вернет stdObject, если второй параметр не передать в true
источник

VM

Valar Morghulis in Laravel Pro
Andrey Bogdanov
мне кажется ошибка вообще не тут,
здесь нужно просто так делать, передавать массив
$article = Article::create(['data' => ['color'=> 'black']]);


json_decode тебе вернет stdObject, если второй параметр не передать в true
Так я же говорю, я с апишки параметр этот получаю, а там текст соответственно, я понимаю, что можно в json_decode завернуть, но как-то меня это смущает
источник

AB

Andrey Bogdanov in Laravel Pro
не надо в json_decode заворачивать...
источник

AB

Andrey Bogdanov in Laravel Pro
без него все работать должно
источник

EG

Egor Gruzdev in Laravel Pro
Andrey Bogdanov
не надо в json_decode заворачивать...
надо, т.к. к нему прилетает строка в формате json, а ее нужно раскодировать перед скармливанием в модель и настроенным cast
источник

AB

Andrey Bogdanov in Laravel Pro
хм, щас гляну как у меня было)
источник

EG

Egor Gruzdev in Laravel Pro
Andrey Bogdanov
хм, щас гляну как у меня было)
у тебя скорее всего односторонний cast, т.е. только при get у тебя идет раскодирование, а при set как есть
источник

AB

Andrey Bogdanov in Laravel Pro
Egor Gruzdev
надо, т.к. к нему прилетает строка в формате json, а ее нужно раскодировать перед скармливанием в модель и настроенным cast
ну если он ее сохраняет, то конечно. Но должна прилетать не строка с фронта, это неверно, нужно массивы всегда посылать
источник

AB

Andrey Bogdanov in Laravel Pro
то есть перед отправкой данных не над их в строку запаковывать, лучше всегда массивы посылать, чтобы не было таких траблов
источник

EG

Egor Gruzdev in Laravel Pro
Andrey Bogdanov
то есть перед отправкой данных не над их в строку запаковывать, лучше всегда массивы посылать, чтобы не было таких траблов
как я понял, у него не запрос от клиента, он сам является клиентом для некой api
источник

AB

Alex Bowey in Laravel Pro
Все таки ответ об опыте использования Sanctum не получил. ладно буду первопроходцем.
Пишу бекенд для андроид, вот искал самый легкий в использовании пакет или решение
источник

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: '...'
}
вот у тебя тут вообщем ошибка,
источник

AB

Andrey Bogdanov in Laravel Pro
сделай
$data = json_decode('{ "color": "black" }', true)
источник

VM

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

AB

Andrey Bogdanov in Laravel Pro
ну или массив сразу передавай, вместо json-строки
источник

AB

Andrey Bogdanov in Laravel Pro
тогда не нужен сеттер и Json_decode
источник

VM

Valar Morghulis in Laravel Pro
Andrey Bogdanov
ну или массив сразу передавай, вместо json-строки
имеешь ввиду через какой-нибудь postman если отправлять?
источник

VM

Valar Morghulis in Laravel Pro
так он по-моему все равно в строке будет сохранять
источник