php – Laravel有一个条件关系

前端之家收集整理的这篇文章主要介绍了php – Laravel有一个条件关系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用户模型,每个用户都有一个内部或外部类型.存储在内部和外部用户上的数据非常不同,因此存在单独的UserInternal和UserExternal模型.

我该如何定义这种关系? UserInternal和UserExternal表中有一个键’user_id’,每个用户在其中一个表中都有一个匹配的行.

当我检索用户数据时,它总是通过用户模型,但我想要扩展数据.

我该怎么做呢?我试过这个,但它并不总是有效(例如,如果我尝试User :: with(‘data’) – > find(1)它将无法工作,因为$this尚未设置.

用户模型中:

public function data()
{
    if( $this -> type === 'internal' )
    {
        return $this -> hasOne('UserInternal');
    }
    else
    {
        return $this -> hasOne('UserExternal');
    }
}

解决方法

尝试在获取用户后加载关系:

$user = User::find(1);

if( ! is_null($user))
{
    $user->load('data');
}

猜你在找的Laravel相关文章