У меня есть запрос, который возвращает конкретный пост:
$post = Post::where('post_code', $post['post_code'])->first();
И возвращается вот так:
^ App\Models\Post {#1351 ▼
#connection: "mysql"
#table: "hotels"
...
#attributes: array:6 [▼
"id" => 1
"post_code" => "AB1"
"comments" => "[{"key": "1DfsGlyLv3yK1", "layout": "comment", "attributes": {"title": "title 1", "message": "comment 1"}}, {"key": lfhK5Nbwc2cPLKY", "layout": "note", "attributes": {"title": "title 2", "message": "comment 2"}}] ◀"
]
И я хочу отображать каждый комментарий с его конкретным заголовком и комментарием, как показано ниже:
[
'name' => "post_comments",
'data' => [
'comments' =>
collect($post['comments'])->map(function ($comment) {
return [
'title' => $comment['title'],
'message' => $comment['message'],
];
}),
]
],
Однако, делая это, он показывает ошибку:
Undefined array key "title"
Знаете ли вы, в чем может быть проблема, поскольку ключ заголовка существует? Спасибо
Если я правильно понимаю, заголовок и сообщение являются внутренними атрибутами, которые находятся внутри комментариев, поэтому вы должны следовать этому порядку, чтобы получить заголовок. комментарии->атрибуты->заголовок/сообщение
Спасибо, но похоже, что он показывает «Попытка прочитать свойство« заголовок »в массиве». С return [ 'title' => $comment->title, 'message' => $comment->message, ];.
Я вижу, вы только что пропустили один уровень в объекте комментарий:
[
'name' => "post_comments",
'data' => [
'comments' =>
collect($post['comments'])->map(function ($comment) {
return [
'title' => $comment['attributes']['title'],
'message' => $comment['attributes']['message'],
];
}),
]
],
Извините, это была опечатка. Я обновил вопрос.