Laravel:覆盖包特征功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件夹寄存器控制器中有一个特性RegistersUSers;这个特性包含一个验证函数,所以如果我们想要覆盖它。只需创建一个具有相同名称的公共函数
class RegisterController extends Controller
{
use RegistersUsers;
public function authenticate(){
}
以上是关于Laravel:覆盖包特征功能的主要内容,如果未能解决你的问题,请参考以下文章
使用修改过的 MustVerifyEmail 特征的 Laravel API 无法获取请求用户
我创建了 laravel 包并在其他项目中需要我的包。我在项目模型中使用包特征。但我收到此错误 => 未找到特征