我有两种类型的用户:client
,manager
。存储在单独的表中。
每个人都有独特的昵称。
所以,我需要按nickname
打开个人资料。
对于客户是:
$client = Client::where("nickname", $nickname)
对于经理是:
$manager = Manager::where("nickname", $nickname)
所以,我尝试制作通用功能,在客户端和经理的哪个地方进行检测并执行相应的查询。
如何通过nickename改进此代码并检测用户类型?
答案 0 :(得分:2)
你应该使用一个模型,我想这将是处理客户和经理的最佳方式。
如果由于某种原因你想要使用两个模型,你可以创建方法并将其放在Client
模型中,因为大多数查询都是针对客户的:
public function getClientOrManagerByNickname($nickname) {
$client = $this->where('nickname', $nickname)->first();
return is_null($client) ? (new Manager)->where('nickname', $nickname)->first() : $client;
}
如果找到客户端,此代码将创建一个查询并返回此客户端。或者它将创建两个queires并将返回manager。如果没有拥有此昵称的客户和经理,则会返回null
。
答案 1 :(得分:1)
正如我所说,我会建议一些更复杂的东西,但对我而言,由于模型的混淆而不容易出错。
我会在此提出建议:
$modelname = getModelName(); $values = $modelName::where(1);
函数getModelName()
只返回ModelName。
我意识到这意味着再次通过DB会增加操作成本,但我宁愿失去一点性能并且在代码中更加连贯。
这是我的个人意见。