我有类似下表(tablename = applications
):
| id | applicants |
| ------------- | ------------- |
| uuid-123-abc | [{'first_name':'Dave'},{'first_name':'Steve'}] |
我需要能够为它创建一个关系,所以我可以去:
$application->applicants
和(在此示例中)获取包含两个Applicant
模型的集合。
我假设我在某处需要申请人模特课程。但我甚至不确定是否可以这样做,因为没有applicant
表。
我正在尝试:
public function applicants()
{
return Collection::make([$this->applicants]);
但这不是一种关系,我试图让它与Neromerx JsonApi一起使用。
事实上,如果有一种方法可以模仿JsonApi的这种行为,我也很乐意使用该解决方案。
到目前为止,我的关系一直很直接。我希望能够以同样的方式获得申请人:
use Neomerx\JsonApi\Schema\SchemaProvider;
class ApplicationSchema extends SchemaProvider
{
protected $resourceType = 'applications';
public function getId($application) {
return $application->id;
}
public function getAttributes($application) {
return [
.....
];
}
public function getRelationships($application, $isPrimary, array $includeRelationships) {
return [
'applicants' => [self::DATA => $application->applicants];
];
}
}
可以使用其中一种方法完成吗?
我没有使用Laravel我只是在Slim上使用Eloquent(版本5.5)。
答案 0 :(得分:0)
试试这个:
public function getApplicantsAttribute()
{
$items = json_decode($this->attributes['applicants']);
$instance = new Applicant();
return $instance->newCollection(array_map(function($item) use($instance) {
return $instance->newFromBuilder($item);
}, $items));
}