在model |上指定自定义表名并设置条件Laravel

时间:2018-05-07 12:23:57

标签: laravel model eloquent

我有一个名为'users'的表。在这个表中,我有一个字段“user_type”(比如值13作为属性管理器)。现在我创建了一个新的Eloquent模型(比如说“PropertyManager”),并设置了该类的以下成员。

/**
 * The table associated with the model.
 *
 * @var string
 */
protected $table = 'users';

现在我的问题是我想设置基于条件的表名。 如果我像这个PropertyManager :: all()一样运行查询,那么它应该返回所有类型为“13”的用户。我不想设置条件,否则如果where条件只是解决方案那么我认为我不需要创建一个单独的Eloquent模型。我可以像User :: where(---)。

那样做

1 个答案:

答案 0 :(得分:1)

又快又脏

让我们利用继承!

在您的PropertyManager模型中:

public function all()
{
    return User::where('user_type', '13')->get();
}

// Call with PropertyManager::all();

这会导致您重载Eloquent的模型默认值并返回实际属性管理器的所有用户。

可能更好

更具可读性和可能接受的是向您的用户模型添加方法,如下所示:

class User
{
    // logic

    public static function getAllPropertyManagers()
    {
        return self::where('user_type', '13')->get();
    }
}

// Call with User::getAllPropertyManagers();

最后,PropertyManagers仍然是用户,为什么不在User模型中加入一些方法并以这种方式加载?