我想用 Laravel 制作 Restful API,我想编写一个通过 CSV 文件的脚本,首先 POST Animal,然后从响应中获取 Animal ID,然后 POST AnimalDate,但它没有按我的意愿工作,我在收到以下错误:
调用未定义的方法 App\Animal::getAnimalDateAttribute()
我有像 Animal 和 AnimalDate 这样的模型,我想在 json 中显示响应,如下所示,所以我将 Eloquent Resources 与 JsonResource 一起使用:
{
"id": 1,
"name": "Gilda Lynch",
"country": "MO",
"description": "Soluta maiores aut dicta repellat voluptas minima vel. Qui omnis assumenda maxime.",
"image": "http://www.abshire.com/",
"dates": [
{
"id": 6,
"date_from": "2019-11-25 04:03:44",
"date_to": "2019-09-30 05:47:28",
"animal_id": 1,
},
]
}
我认为这个问题出在 Animal 模型和 AnimalDate 模型之间的关系中,但我无法解决它,所以我正在寻求帮助。
这些模型之间的关系: Animal hasMany AnimalDate
class Animal extends Model
{
public function animalDates()
{
return $this->hasMany(AnimalDate::class);
}
}
和 AnimalDate 属于动物
class AnimalDate extends Model
{
public function animal()
{
return $this->belongsTo(Animal::class);
}
}
我创建了资源 - AnimalDateResource.php
class AnimalDateResource extends JsonResource
{
public function toArray($request)
{
return parent::toArray($request);
}
}
和动物资源:
class AnimalResource extends JsonResource
{
public function toArray($request)
{
// return parent::toArray($request);
return [
'id' => $this->id,
'name' => $this->name,
'country' => $this->country,
'description' => $this->description,
'image' => $this->image_url,
'dates' => AnimalDateResource::collection($this->animalDates)
];
}
}
在控制器中,我只是使用new AnimalResource($animal)
和方法索引和显示效果完美。
有什么解决方案可以像 Animal 然后 AnimalDate 一样发布它,还是我必须先发布它然后通过 JsonResouce 显示关系?