php - Laravel 有一个条件关系

标签 php laravel orm laravel-4

我有一个用户模型,每个用户都有一种内部或外部类型。存储在内部和外部用户的数据非常不同,因此有单独的 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');
}

关于php - Laravel 有一个条件关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26220264/

相关文章:

php - MySQL 插入子查询(在联结表上)

php - Laravel 5.1 hasManyThrough 关系和数据透视表

php - PostgreSQL:唯一违反:7 错误:重复键值违反唯一约束 "users_pkey"

php - 使用 Laravel 的 Eloquent 将数据发送到数据库的问题

php - Eloquent ORM 条件模型关系

php - 尝试在php中获取非对象简单html dom的属性

php - 将 WooCommerce 购物车数量替换为可预订产品的人数

php - 嵌入式支付 IPN

php - 在 laravel 中分页时搜索查询丢失

hibernate - Grails域类动态列表作为属性