我有一个Product
实体和一个Brand
实体。
一个产品可以有多个品牌;所以让我们拿一个有B1和B2品牌的产品P为例。其中一个品牌B1是“主要”品牌。
我想知道一个产品在Product实体中是否有某个品牌(比如getter / isser),特别是该产品是否属于主品牌。
我有一个env()
助手来根据环境设置每个品牌的ID,所以我可以做:
public function isB1Product(): bool
{
foreach ($this->brands as $brand) {
if ($brand->getId() === (int)env('B1_ID') {
return true;
}
}
return false;
}
你知道有没有其他方法可以做到这一点?我不想对价值观进行硬编码(品牌名称随时可能更改)。
谢谢!
2条答案
按热度按时间xytpbqjk1#
您可以为产品类型定义接口。这样,它仍然会反映业务逻辑,而不是直接硬编码值,并且它可以在代码中的任何地方使用。
6gpjuf902#
感谢您的回复。
我不能使用接口,因为数据存储在数据库中,所以我不知道哪些数据可以存储。
我意识到我的
isB1Product()
方法名并不能反映我真正想要的东西;而不是isMainProduct()
知道B1是主要品牌。不管怎样,我找到了一个解决方案,编写一个
env()
助手函数--就像Laravel一样。感谢大家!