Laravel自定义变形与自定义表结构的关系

时间:2018-06-22 20:01:34

标签: laravel laravel-5 eloquent

我具有以下表格结构:

Tokens
- type ( Flag Indicating that if its a Users token or company's token )
- user_company_id (User or Company Id )

Users
- id
- username
- password

Companies
- id
- username
- password

我正在尝试根据 type 标志从令牌创建关系以获取用户或公司。

我知道我应该有一个不同的建模,但是该数据库已启动并且正在运行,我无法更改其结构。

我该怎么做?

我试图弄清楚,但直到现在都没有成功=(

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的操作(确保名称空间和模型名称正确):

令牌模型:

class Token extends Model
{
    public function tokenable()
    {
        return $this->morphTo();
    }
}

用户模型:

class User extends Model
{
    public function tokens()
    {
        return $this->morphMany('App\Token', 'tokenable', 'type', 'user_company_id');
    }
}

公司型号:

class Company extends Model
{
    public function tokens()
    {
        return $this->morphMany('App\Token', 'tokenable', 'type', 'user_company_id');
    }
}

请注意type方法调用中的第三个(user_company_id)和第四个(morphMany)参数,这些参数是可选的,但在您的情况下,这些参数是必需的,因为您具有自定义字段数据库中的名称。查看文档以了解how to retrieve relations