在Laravel 5中访问原始的Eloquent mutated属性值

时间:2015-08-21 13:50:17

标签: laravel laravel-5 eloquent accessor

假设我有一个模型Foo并且我正在改变属性getter,如下所示:

class Foo extends Model
{   
    protected $table = 'foo';

    public function getSomeBarAttribute($value)
    {
        return some_function($value);
    }
}

有没有办法访问属性的原始值,预变异?

3 个答案:

答案 0 :(得分:12)

您要查找的方法是getOriginal。要获得原始值,您可以使用:

$this->getOriginal('some_bar');

答案 1 :(得分:1)

在模型中定义了这个var:

Template.parentTemplate.helpers({
  currentPath: function() {
    return window.location.pathname;
  }
});

它受到保护,因此您应该添加一个函数来获取原始值

(未经测试)

答案 2 :(得分:0)

priceRanges方法仅将db属性返回为 Array 类型。因此,getAttributes和setAttributes等值不包括在内。

Array 返回的 [key => value] 对于新的Eloquent实例来说足够了。如果要使用计算旧属性的GetAttributes,则可以在使用具有原始值的getAttributes之前创建新的模型实例

private static LocalStockManager instance;
    private string M_str_sqlcon;
    private MySqlConnection mysqlcon;

    public LocalStockManager()
    {
        M_str_sqlcon = "server=xxx.xx.xxx.x;user id=user;password=pass;database=db";
        mysqlcon = new MySqlConnection(M_str_sqlcon);
    }

    public static LocalStockManager Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new LocalStockManager();
            }

            return instance;
        }
    }

    public int GetLocalAmountOf(string productTag)
    {
        MySqlCommand mysqlcom = new MySqlCommand("SELECT COUNT(ID) FROM...", mysqlcon);
        bool bl = mysqlcon.Ping(); // returns false?
        mysqlcon.Open();
        MySqlDataReader mysqlread = mysqlcom.ExecuteReader(CommandBehavior.CloseConnection);
        int counter = 0;
        while (mysqlread.Read())
        {
            counter = mysqlread.GetInt32(0);
        }
        mysqlcon.Close();

        return counter;
    }