laravel eloquent 匹配多字表名的麻烦

Dia*_*lan 5 laravel eloquent

我非常喜欢 Eloquent 工作时!但是这次我添加了一个带有两个字名称的表格,我有一些错误,我只是还没有看到......

我已经有一个 Person 对象/人员表,其他实体已经有了一对多的关系。现在我添加了可以多人播放的音频文件的概念。我为此添加了两个表:

  • audio_files(带有自动 ID、文件名、摘要、时间戳)
  • audio_file_person(带有自动 id、audio_file_id 和 person_id)

然后我有 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 记录的人来说,这似乎是空的。

关于我可能做错了什么或我应该检查哪里的任何建议?在此先感谢您的帮助!

mso*_*wal 0

如果错误无法根据模型获取表名称,则必须将模型中的表属性声明为

protected $table = 'audio_file_person';
Run Code Online (Sandbox Code Playgroud)

因此它将采用自定义表名称,而不是使用模型名称的复数版本