I have 3 models: User, Suburb, City
City hasMany Suburb and Suburb belongsTo a City.
User belongsToMany City and City belongsToMany User.
Suburb belongsToMany User.
There are two pivot tables between these models, and I am using the same API resource User for the response.
class User extends JsonResource
{
public function toArray($request)
{
return
[
'id' => $this->id,
........
];
}
}
Now in Suburb page I want to retrieve a field valid_from from City_User pivot table data, So I tried
return [
'valid_from' => $this->whenPivotLoaded('city_user', function(){
return $this->pivot->valid_from;
})
]
However, this returns null as $this->whenPivotLoaded seems point to Suburb-User pivot table not City-User. So this works fine if I navigate to the City page.
I also tried
return [
$this->mergeWhen($this->relationLoaded('city'), function () {
return [
'valid_from' => $this->pivot->valid_from,
];
}),]
City-User relation is loaded but still no luck.
dd($this):
App\Http\Resources\User {#900
+resource: App\User {#837
#table: "user"
#guarded: []
#connection: "mysql"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
.....
User Model:
public function city(): BelongsToMany
{
return $this->belongsToMany(City::class, 'city_user')
->withPivot('valid_from')
;
}
What I did wrong?
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire