雄辩的重载静态查找方法


Laravel Eloquent overriding static find method

由于国际化和其他规则的存在,当我们从数据库检索对象时,我们需要向对象添加额外的字段(例如,名称、本地货币值等),这需要一点'逻辑'。

我希望我能做

$product = Product::find(1);
echo $product->name;
echo $product->local_cost;

这些是将被显示但不被保存的项目,所以我不太关心维护它们之间的关系。

为您的模型添加getXXXAttribute() Accessor方法

class Product extends BaseModel {
    public function getLocalCostAttribute()
    {
        return $this->base_cost * $this->exchange_rate;
    }
}

然后你可以使用

来访问这个"属性"
echo $product->local_cost;

请注意,新方法使用local_cost作为方法名称的一部分,但从"蛇形大小写"切换为"骆驼大小写"