Eloquent: идентификатор защиты при вставке в одну базу данных, но не защищать ее для другой базы данных. - PullRequest
0 голосов
/ 04 декабря 2018

Мне нужно защищать столбец идентификатора при вставке в базу данных, однако я не хочу защищать его при вставке в другую базу данных из-за необходимости вручную устанавливать идентификатор, чтобы таблицы были синхронизированы.

Однако я не могу найти способ сделать это, ниже приведено то, что я получил в данный момент, однако это не работает вообще, поскольку я просто получаю сообщение об ошибке:

Поле 'id' не имеет значения по умолчанию

Это моя текущая модель:

<?php

namespace App\Models\Seasonal;

use Illuminate\Database\Eloquent\Model;

class SeasonalBanner extends Model
{

    protected $connection = 'dev';
    protected $guarded = [ 'id' ];
    protected $appends = [ 'period' ];

    public static function boot()
    {
        parent::boot();

        self::creating(function($model){
            if ($model->connection === 'live') {
                $model->guarded = [];
            }
        });
    }

    public function dates() {
        return $this->hasMany(SeasonalBannerDates::class);
    }

    public function getPeriodAttribute() {
        return [ $this->start, $this->end ];
    }

}

1 Ответ

0 голосов
/ 05 декабря 2018

На мой взгляд, лучший способ - вообще не использовать $guarded в таком случае.Просто установите:

protected $guarded = [];

и в своем коде, в зависимости от того, какую базу данных вы используете, заполните id или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...