【发布时间】:2016-01-06 10:27:32
【问题描述】:
我正在为我的 Web 应用程序使用 Laravel 框架,使用雄辩的数据模型和 Fractal 来转换一些数据。
我想使用分形的parseIncludes 功能,但尽管遵循了文档,但我似乎无法让它工作。
这是我的代码:
StudentTransformer.php
class StudentTransformer extends Fractal\TransformerAbstract
{
protected $availableIncludes = [
'course'
];
public function transform(Student $student)
{
return [
'name' => $student->name,
// other attributes
];
}
public function includeCourse(Student $student)
{
$course = $student->course;
return $this->item($course, new CourseTransformer);
}
}
CourseTransformer.php
class CourseTransformer extends Fractal\TransformerAbstract
{
public function transform(Course $course)
{
return [
'name' => $course->name
// other attributes
];
}
}
在我的一个控制器中:
$student = App\Models\Student::first();
$fractal = new \League\Fractal\Manager();
$fractal->parseIncludes('/student?include=course');
$fractal->setSerializer(new \League\Fractal\Serializer\ArraySerializer());
$response = new \League\Fractal\Resource\Item($student, new \App\Transformers\Models\StudentTransformer);
return response()->json($fractal->createData($response)->toArray());
此外,当我从 StudentTransformer 中删除 availableIncludes 并改用 defaultIncludes 时,如下所示:
protected $defaultIncludes = [
'course'
];
效果很好?!不知道为什么!任何帮助将不胜感激。
【问题讨论】:
标签: php laravel serialization