拉拉维尔 5.7。我有一个模型Audio,带有字段id和title. 一个Audio可以有很多AudioVersions,其中AudioVersion有id,audio_id(指Audio)和url。
现在,我有两个父模型,Foo和Bar,它们可以有很多Audio模型。
声音的:
class Audio extends Model
{
public function versions()
{
return $this->hasMany('App\AudioVersion', 'audio_id');
}
}
音频版本:
class AudioVersion extends Model
{
public function audio()
{
return $this->belongsTo('App\AudioContent');
}
}
福:
class Foo extends Model
{
public function audioContents()
{
return $this->morphToMany('App\Audio', 'audio_contentable', 'audio_contentable');
}
}
我有一个 Eloquent API 资源,FooResource它返回它的Audio对象:
Foo资源:
class FooResource extends JsonResource
{
public function toArray($request)
{
return [
'audio' => AudioResource::collection($this->audioContents),
];
}
}
音频资源:
class AudioResource extends JsonResource
{
public function toArray($request)
{
return [
'urls' => $this->versions,
];
}
}
我的问题是,在我的audio关键中,我FooResource只想返回与它们相关Audio的 s 。AudioVersions即,如果我有一个Audiowith no AudioVersions,我不希望它Audio包含在Foo'saudio键中。我找不到在 Eloquent / Resources 中执行这种深度条件逻辑的方法。