我有一个名为'users'的表。在这个表中,我有一个字段“user_type”(比如值13作为属性管理器)。现在我创建了一个新的Eloquent模型(比如说“PropertyManager”),并设置了该类的以下成员。
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'users';
现在我的问题是我想设置基于条件的表名。 如果我像这个PropertyManager :: all()一样运行查询,那么它应该返回所有类型为“13”的用户。我不想设置条件,否则如果where条件只是解决方案那么我认为我不需要创建一个单独的Eloquent模型。我可以像User :: where(---)。
那样做答案 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模型中加入一些方法并以这种方式加载?