В таблицах Laravel :: Eloquent как настроить модель для чтения из представления, но для сохранения в таблицу? - PullRequest
0 голосов
/ 22 сентября 2018

Дано:

  1. У меня есть таблица MySQL с именем Letter.
  2. У меня есть строковый столбец с именем Letter.RecipientCode, который идентифицирует, к кому идет письмок.
  3. Код представляет собой строку чисел, идентифицирующих страну, сообщество и персональный идентификатор получателя, например:

    0104328577

  4. Первые три символа кода обозначают страну.

  5. У меня есть еще одна таблица под названием Area, в которой могут храниться различные типы областей, одним из которых является страна.

  6. Поле Area.CountryCode хранит совпадение для Letter.RecipientCode.substring (0,3).
  7. В поле Area.Name также хранится название страны.
  8. Iхотел бы включить Area.Name в модель Eloquent Letter в качестве вычисляемого поля.Поэтому я написал простое представление SQL, которое объединяет таблицу Letter с таблицей Area ON SUBSTRING (Letter.RecipientCode, 1,3) = Area.CountryCode
  9. Я установил модель Eloquent Letter для чтения данныхиз вида вот так:

    protected $ table = 'view_Letter';

Проблема:

Однако, когда ясохранить модель с помощью $ letter-> save (), она пытается вставить или обновить обратно до view_Letter.

Как я могу прочитать данные из представления, чтобы получить вычисляемые поля, сохраняя данные в таблицу "Letter"?

1 Ответ

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

Вы можете использовать $table для фактической таблицы и установить представление с глобальной областью действия :

protected $table = 'Letter';

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

    static::addGlobalScope('from', function ($builder) {
        $builder->from('view_Letter');
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...