指定自定义表格名称并在模型| Laravel上设置条件

指定自定义表格名称并在模型| Laravel上设置条件,laravel,model,eloquent,Laravel,Model,Eloquent,我有一个名为“users”的表。在这个表中,我有一个字段user_type,比如说值13作为属性管理器。现在,我创建了一个新的有说服力的Modellet say PropertyManager,并设置了该类的以下成员 /** * The table associated with the model. * * @var string */ protected $table = 'users'; 现在我的问题是,我想设置基于条件的表名。 如果像这样运行查询PropertyManager:

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

/**
 * The table associated with the model.
 *
 * @var string
 */
protected $table = 'users';
现在我的问题是,我想设置基于条件的表名。 如果像这样运行查询PropertyManager::all,那么它应该返回类型为13的所有用户。我不想设置where条件,否则如果where条件只是解决方案,那么我认为我不需要创建单独的雄辩模型。我可以像User::where--.

那样快速而肮脏

让我们利用继承的优势

在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();

既然最终,PropertyManager仍然是用户,为什么不在用户模型中放置一些方法并以这种方式加载它们呢?

试试这就是我想要的。谢谢你,老板@ab_ab