我有一个用户模型,其中有几个文件与它们具有一对一的变形关系:

User                                               File
_______________________                           _________________________
id                                                 id
name                                               url
email                                              ...
...                                                filable_type
loa_file_id                                        filable_id
passport_file_id

如何建立loa_file_id和FILE之间的关系以及Passport_FILE_ID和FILE之间的关系?

推荐答案

File型号中:

class File extends Model
{
    public function fileable()
    {
        return $this->morphTo('filable');
    }
}

User型号中:

class User extends Model
{
    public function loaFile()
    {
        return $this->morphOne(File::class, 'filable', 'filable_type', 'loa_file_id');
    }

    public function passportFile()
    {
        return $this->morphOne(File::class, 'filable', 'filable_type', 'passport_file_id');
    }
}

定义了这些关系后,您现在可以访问用户的关联文件,如下所示:

$user = User::find(1);
$loaFile = $user->loaFile;
$passportFile = $user->passportFile;

Laravel相关问答推荐

如何判断用户是否已登录Laravel

拉威尔望远镜没有显示请求细节

如何传递多个参数给路由

如何从laravel中的另一个表中获取用户名

如何更新 Laravel 4 中现有的 Eloquent 关系?

使用命令行界面停止 laravel 服务器

Laravel - 加载常见的页眉和页脚以查看

我的composer 不会完全用 Laravel 4 更新它会被artisan卡住

Eloquent 的集合方法,例如 only 或 except 返回一个空集合

Laravel Blade 没有额外的空格?

Laravel 5.3 Electron邮件队列中不允许序列化关闭

如何在 Laravel 5 中验证当前、新密码和新密码确认?

如何在 Laravel 5.1 中为Electron邮件添加标题

在共享主机中仅使用 FTP 部署 Laravel 5

Select,where JSON 包含数组

Laravel 4:将什么作为参数传递给 Url 类?

如果在 Laravel 5.1 中找不到路由,则显示 404 页面

Laravel 排序集合,然后按键

以编程方式而不是从 CLI 运行 Laravel 5 seeder

找不到 HOME 环境 -- 扩展 `~'