如何区分配置文件?

时间:2016-11-10 10:01:07

标签: php laravel laravel-5.2 laravel-5.3

我有两种类型的用户:clientmanager。存储在单独的表中。

每个人都有独特的昵称。

所以,我需要按nickname打开个人资料。

对于客户是:

$client = Client::where("nickname", $nickname)

对于经理是:

$manager = Manager::where("nickname", $nickname)

所以,我尝试制作通用功能,在客户端和经理的哪个地方进行检测并执行相应的查询。

如何通过nickename改进此代码并检测用户类型?

2 个答案:

答案 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会增加操作成本,但我宁愿失去一点性能并且在代码中更加连贯。

这是我的个人意见。