我非常喜欢 Eloquent 工作时!但是这次我添加了一个带有两个字名称的表格,我有一些错误,我只是还没有看到......
我已经有一个 Person 对象/人员表,其他实体已经有了一对多的关系。现在我添加了可以多人播放的音频文件的概念。我为此添加了两个表:
然后我有 AudioFile.php:
class AudioFile extends Model
{
protected $fillable = [
'filename', 'summary', 'recording_date'
];
public function people()
{
return $this->belongsToMany('App\Person');
}
public function getPersonListAttribute()
{
return $this->people->lists('id')->all();
}
}
Run Code Online (Sandbox Code Playgroud)
我已经用这个更新了 Person.php:
public function audio_files()
{
return $this->belongsToMany('App\AudioFile')->withTimestamps();
}
public function getAudioFileListAttribute()
{
return $this->audio_files->lists('id')->all();
}
Run Code Online (Sandbox Code Playgroud)
使用我用于与人们相关联的其他记录的相同模式,在此人的视图中,我正在检查是否有任何音频文件要显示:
@unless ($subject->audio_files->isEmpty())
<div>
<h4>Audio links: </h4>
@foreach($subject->audio_files as $audio)
@include ('audio.partials.audio_link', ['audio' => $audio])
@endforeach
<br/>
</div>
@endunless
Run Code Online (Sandbox Code Playgroud)
但是,对于我确实为他们提供 audio_file_person 记录的人来说,这似乎是空的。
关于我可能做错了什么或我应该检查哪里的任何建议?在此先感谢您的帮助!
如果错误无法根据模型获取表名称,则必须将模型中的表属性声明为
protected $table = 'audio_file_person';
Run Code Online (Sandbox Code Playgroud)
因此它将采用自定义表名称,而不是使用模型名称的复数版本