Laravel 5 扩展Laravel';s基模型

Laravel 5 扩展Laravel';s基模型,laravel-5,models,extend,php-carbon,Laravel 5,Models,Extend,Php Carbon,在Laravel中,所有模型都扩展了基础模型 laravel eloquent模型有一个名为$dates的受保护数组属性。添加到此数组中的每个日期都会自动转换为碳实例 我想用类似的功能扩展基本模型。例如,使用受保护的$times属性。所有时间属性都将转换为碳实例 你会怎么做 提前谢谢 无论你想做什么都很容易。基本的PHP知识 如果要添加一些其他字段以转换为Carbon实例,只需将它们添加到$dates数组中即可 如果您想添加一些新参数,只需扩展laravel的模型,如下所示 <?php n

在Laravel中,所有模型都扩展了基础模型

laravel eloquent模型有一个名为$dates的受保护数组属性。添加到此数组中的每个日期都会自动转换为碳实例

我想用类似的功能扩展基本模型。例如,使用受保护的$times属性。所有时间属性都将转换为碳实例

你会怎么做


提前谢谢

无论你想做什么都很容易。基本的PHP知识

如果要添加一些其他字段以转换为
Carbon
实例,只需将它们添加到
$dates
数组中即可

如果您想添加一些新参数,只需扩展laravel的模型,如下所示

<?php
namespace App;

class MyModel extends \Illuminate\Database\Eloquent\Model
{

    protected $awesomness = [];

    /**
     *  override method
     *
     */
    public function getAttributeValue($key)
    {
        $value = $this->getAttributeFromArray($key);

        // If the attribute has a get mutator, we will call that then return what
        // it returns as the value, which is useful for transforming values on
        // retrieval from the model to a form that is more useful for usage.
        if ($this->hasGetMutator($key))
        {
            return $this->mutateAttribute($key, $value);
        }

        // If the attribute exists within the cast array, we will convert it to
        // an appropriate native PHP type dependant upon the associated value
        // given with the key in the pair. Dayle made this comment line up.
        if ($this->hasCast($key))
        {
            return $this->castAttribute($key, $value);
        }

        // If the attribute is listed as a date, we will convert it to a DateTime
        // instance on retrieval, which makes it quite convenient to work with
        // date fields without having to create a mutator for each property.
        if (in_array($key, $this->getDates()) && !is_null($value))
        {
            return $this->asDateTime($value);
        }

        //
        //
        // that's the important part of our modification
        //
        //
        if (in_array($key, $this->awesomness) && !is_null($value))
        {
            return $this->doAwesomness($value);
        }

        return $value;
    }

    public function doAwesomness($value)
    {
        //do whatever you want here
        return $value;
    }

}