自定义口才的table()-> insert()函数

时间:2019-03-26 10:38:44

标签: php eloquent

我正在尝试修改雄辩的Manager::table('table')->insert($array)(和Manager::table('table')->update($array))的基本功能,但是我不确定如何实现。

我有一个扩展管理器的类:

class Database extends \Illuminate\Database\Capsule\Manager

在该类中,我创建了一个扩展table()的函数,但是我不确定如何扩展它的insertupdate,因为table()函数返回\Illuminate\Database\Query\Builder,并且所讨论的构建器与Manager完全分开。

任何想法我该如何实现?

最终目标是拥有自己的insert修改版,因此当我执行Manager::table('table')->insert($array)时,插入将执行以下操作,而不是原始插入:

public function insert(array $values)
{
    if (empty($values)) {
        return true;
    }

    if (! is_array(reset($values))) {
        $values = [$values];
    } else {
        foreach ($values as $key => $value) {
            ksort($value);

            ($value == NULL) ? $values[$key] = '' : $values[$key] = $value;
        }
    }

    return $this->connection->insert(
        $this->grammar->compileInsert($this, $values),
        $this->cleanBindings(Arr::flatten($values, 1))
    );
}

(请注意,上面的代码是根据我的需要修改的实际函数的复制/粘贴版本,因此,如果我只是将函数复制/粘贴到某个地方,则像Arr::flatten这样的普通东西会引起问题。我试图找到一种扩展该功能的正式方法,这样我就不必担心此类问题了

0 个答案:

没有答案