如何解决在 Laravel 的对象响应中插入额外的数据
这是我的职责
public function show(Course $course,Chapter $chapter)
{ $chapter_id=$chapter->id;
$data= Content::with(['exercise','topic'])->where('chapter_id','=',$chapter_id)->get();
$data['isviewed']=True;
return $this->SuccessDataResponse($data);
}
输出是
{
"0": {
"id": 1,"chapter_id": 1,"type": "topic","topic_id": 1,"exercise_id": null,"exercise": null,"topic": {
"id": 1,"user_id": 2,"type": "video","pdf_url": "0","video_url": "",}
},**"isviewed": true**
}
如何添加"isviewed": true
,如下所示
{
{
"id": 1,"isviewed": true,}
}
解决方法
试试这个:
public function show(Course $course,Chapter $chapter)
{ $chapter_id=$chapter->id;
$data= Content::with(['exercise','topic'])->where('chapter_id','=',$chapter_id)->get();
$result = array_merge($data,['isviewed' => true]);
return $this->SuccessDataResponse($result );
}
,
在控制器中设置 is_viewed
而不实际将数据保存在任何地方是没有意义的 - 您也可以在视图中对其进行硬编码。
假设您真正想要做的是在课程中保存 is_viewed
,您需要将该字段添加到数据库中。
首先,创建一个新的迁移:
php artisan make:migration add_is_viewed_to_course_table
然后,在您的新迁移文件中,添加字段:
$table->boolean('is_viewed');
然后迁移:
php artisan migrate
接下来,在您的控制器中,将该字段设置为 true:
$course->is_viewed = true;
$course->save();
备注
您可能还想查看其他一些内容:
- 您真的要标记为已查看的课程,而不是章节吗?
- 当您调用
Content::with
时,您可能会得到不止一个返回。您需要选择将哪一个标记为已查看。 - 您应该尽量保持语法一致 - 在您的模型中,您的字段有下划线,但后来您说的是
isviewed
,所以我在我的解决方案中将其更改为is_viewed
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。