Laravel:覆盖包装特征功能



我正在使用Compoships软件包来建立Laravel支持多键关系,但我想在此软件包中覆盖特征功能。

这是当前流程:

我在项目中使用的主要特征使用了包装中的另一个,该软件包使用另一个(我想覆盖的)

public function addConstraints()
{
    if (static::$constraints) {
        $foreignKey = $this->getForeignKeyName();
        $parentKeyValue = $this->getParentKey();
        //If the foreign key is an array (multi-column relationship), we adjust the query.
        if (is_array($this->foreignKey)) {
            foreach ($this->foreignKey as $index => $key) {
                /*list(, $key) = explode('.', $key);
                $fullKey = $this->getRelated()->getTable().'.'.$key;*/
                $keyPortions = explode('.', $key);
                if(count($keyPortions) === 2)
                    $fullKey = $this->getRelated()->getTable() . '.' . $key;
                else
                    $fullKey = $key;
                $this->query->where($fullKey, '=', $parentKeyValue[$index]);
                $this->query->whereNotNull($fullKey);
            }
        } else {
            $fullKey = $this->getRelated()->getTable().'.'.$foreignKey;
            $this->query->where($fullKey, '=', $parentKeyValue);
            $this->query->whereNotNull($fullKey);
        }
    }
}

我能够在本地覆盖它,但是一旦我部署了代码(作曲家更新),我将失去修改

那我该怎么办?

简单只需在控制器中使用相同名称的公共功能

其自动覆盖

例如

我们知道在Auth文件夹寄存器控制器中有一个特质寄存器。该特征包含一个函数,因此,如果我们要覆盖它。只需使用同名的公共功能

class RegisterController extends Controller
{
    use RegistersUsers;
   public function authenticate(){
   }

相关内容

  • 没有找到相关文章

最新更新