如何区分配置文件?

How to differentiate profiles?

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

每个人都有独特的昵称。

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

客户是:

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

经理是:

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

因此,我尝试制作通用函数来检测客户端和管理器的位置并执行适当的查询。

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

你应该为此使用一个模型,我想这将是处理客户和经理的最佳方式。

如果出于某种原因您想使用两个模型,您可以创建方法并将其放入 Client 模型中,因为大多数查询都是针对客户的:

public function getClientOrManagerByNickname($nickname) {
    $client = $this->where('nickname', $nickname)->first();

    return is_null($client) ? (new Manager)->where('nickname', $nickname)->first() : $client;
}

如果找到客户,此代码将创建一个查询,并将 return 此客户。或者它会创建两个队列并 return 经理。如果没有这个昵称的客户和经理,它将return null.

正如我所说,我会建议一些更复杂的东西,但对我来说,由于对模型的混淆,我不太容易犯错 returned。

我会提出一些建议:

$modelname = getModelName(); $values = $modelName::where(1);

其中函数 getModelName() 只是 return ModelName。 我知道这意味着要再次通过数据库,这会增加操作成本,但我宁愿损失一点性能并使代码更加连贯。

不过这是我个人的看法。