我正在使用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(){
}