метод laravel replicate () и вычисляемый столбец базы данных - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь скопировать строку с помощью метода replicate ():

$doc = Doc::find(64618);
$newdoc = $doc->replicate();
$newdoc->Price= 9999; 
$newdoc->save();

но эта таблица содержит несколько вычисляемых столбцов, и я получаю сообщение об ошибке, что поля данных не могут быть обновлены. Как я могу исключить эти поля при использовании replicate ()?

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете передать столбцы, которые вы хотите исключить

$doc = Doc::find(64618);
$newdoc = $doc->replicate(['column1', 'column2']);
$newdoc->Price= 9999; 
$newdoc->save();

Вот источник, который вы узнаете, если глубоко погрузитесь в ядро.

/**
     * Clone the model into a new, non-existing instance.
     *
     * @param  array|null  $except
     * @return \Illuminate\Database\Eloquent\Model
     */
    public function replicate(array $except = null)
    {
        $defaults = [
            $this->getKeyName(),
            $this->getCreatedAtColumn(),
            $this->getUpdatedAtColumn(),
        ];

        $except = $except ? array_unique(array_merge($except, $defaults)) : $defaults;

        $attributes = Arr::except($this->attributes, $except);

        $instance = new static;

        $instance->setRawAttributes($attributes);

        return $instance->setRelations($this->relations);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...