Я использую Laravel с ресурсами для создания REST Api. Я хотел бы получить json с информацией об элементе отношений, как в примере
{
"id": 30,
"calf": 23,
"chest": 27
"user_id": {
"id": 30,
"email": "test@example.com"
}}
Но когда я создал код, как в документации, я получил ошибку «Сначала вызов функции-члена () в int». Может кто-нибудь сказать мне, что я делаю не так? Я сделал то же самое, что и в документах, я пытался также использовать whenLoaded, но эту же ошибку. Это мой код:
class CircuitMeasurementResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
// return parent::toArray($request);
return [
'id' => $this->id,
'calf' => $this->calf,
'chest' => $this->chest,
'user_id' => UserResource::collection($this->user_id)
];
}
}
Мой метод отображения в контроллере:
public function show(CircuitMeasurement $circuitMeasurement): CircuitMeasurementResource {
return new CircuitMeasurementResource($circuitMeasurement);
}
Мои модели:
class CircuitMeasurement extends Model
{
protected $fillable = [
'user_id', 'calf', 'thigh', 'hips', 'waist', 'chest', 'neck', 'biceps'
];
public function users(){
return $this->belongsTo(User::class);
}
}
class User extends Authenticatable
{
use Notifiable, HasApiTokens;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function weightMeasurement(){
return $this->hasMany(WeightMeasurement::class);
}
public function circuitMeasurement(){
return $this->hasMany(CircuitMeasurement::class);
}
}