OctoberCMS: Как расширить System \ Models \ File и добавить в нее новое поле?

Мне нужно добавить дополнительный столбец в system_files Таблица. Я бы предпочел не изменять эту таблицу, поэтому я решил добавить новую таблицу с одним столбцом, а затем расширить System\Models\File модель с hasOne отношения. Поэтому я создал новую таблицу под названием myname_plugin_tag с двумя полями: file_id а также title и создал новый файл для модели под названием Tag:

class Tag extends Model
{
use \October\Rain\Database\Traits\Validation;

/*
* Validation
*/
public $rules = [
];

/*
* Disable timestamps by default.
* Remove this line if timestamps are defined in the database table.
*/
public $timestamps = false;

/**
* @var string The database table used by the model.
*/
public $table = 'myname_plugin_tag';
}

И в boot Метод моего плагина у меня есть:

System\Models\File::extend(function($model){
$model->hasOne['tag']=[
'MyName\Plugin\Models\Tag',
'key' => 'file_id',
'timestamps' => 'false'
];
});

Кажется, это все, что мне нужно сделать. Но при сохранении файла с новыми отношениями, которые я определил, я получаю сообщение об ошибке.

$user = Auth::getUser();

$tag = new Tag;
$tag->title = 'some tag';

$file = new File;
$file->data = Input::file('catalog');
$file->title = Input::get('title');
$file->tag = $tag; // => This line is the culprit. If I comment it, the exception will not raise

$user->files = $file;
$user->save();

Исключение:

Вызов неопределенного метода October \ Rain \ Database \ QueryBuilder :: withTimestamps ()
E: \ Development \ git \ catalog-manager \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Query \ Builder.php строка 2123

Если я уберу строку 'timestamps' => 'false'исключение исправляется и $file модель будет сохранена, но $tag модель еще не сохранена.

С помощью $file->tag()->save($tag) работает и сохраняет тег! Но проблема не решена. Я не могу получить доступ к сохраненному свойству через тег $ user-> files [0] -> и получить эту ошибку:

Попытка получить свойство необъекта

Выход из {{dump($user->files[0])}} ясно показывает, что tag свойство не было добавлено к File модель:

id  integer
disk_name  string
file_name  string
file_size  integer
content_type  string
title  string
description  NULL
field  string
sort_order  integer
created_at  string
updated_at  string
path  string
extension  string

Так что кажется, что File модель не знает о новом tag имущество добавлено к нему. Я что-то пропустил?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]