Laravel 5, как добавить поля $with/$appends в дочернем классе моделиPhp

Кемеровские программисты php общаются здесь
Anonymous
Laravel 5, как добавить поля $with/$appends в дочернем классе модели

Сообщение Anonymous »

У меня есть несколько моделей, которые имеют некоторые общие функции (из-за их полиморфизма), которые я хотел бы объединить в класс ResourceContentModel (или даже в особенность).

Класс ResourceContentModel будет расширять класс eloquent Model, а мои отдельные модели затем будут расширять ResourceContentModel.

Мой вопрос касается таких полей модели, как $with, $appends и $touches. . Если я использую их для каких-либо общих функций в ResourceContentModel, то, когда я переопределяю их в своем дочернем классе модели, они перезаписывают значения, которые я установил в своем родительском классе.

Ищете советы, как решить эту проблему?

Например:

Код: Выделить всё

class ResourceContentModel extends Model
{
protected $with = ['resource']
protected $appends = ['visibility']

public function resource()
{
return $this->morphOne(Resource::class, 'content');
}

public function getVisibilityAttribute()
{
return $this->resource->getPermissionScope(Permission::RESOURCE_VIEW);
}
}

class Photo extends ResourceContentModel
{
protected $with = ['someRelationship']
protected $appends = ['some_other_property']

THESE ARE A PROBLEM AS I LOSE THE VALUES IN ResourceContentModel
}
Мне нужен простой способ сделать это, чтобы дочерние классы не слишком сильно менялись из-за того, что я выделил дополнительный класс в иерархии для сбора общий код.

Подробнее здесь: https://stackoverflow.com/questions/446 ... odel-class

Вернуться в «Php»