у меня есть NewsItem
Модель со свойством content
из text
тип. Это долго.
Теперь я хочу вернуть все content
в show
действие, но в index
действие хочу вернуть только первый например. 100 символов content
поле.
Я знаю, что могу использовать аксессор, но думаю, это повлияет на show
действие тоже.
Спасибо за помощь.
Я думаю, что аксессор был бы лучшим решением. Кто-то может иметь лучший, хотя.
Создайте отдельный метод доступа под названием что-то вроде «отрывка», используйте его в index
и использовать «контент» в show
public function getExcerptAttribute()
{
return str_limit($this->attributes['content'], 100, '...');
}
Просто измените значение, прежде чем вернуться в метод индекса. Это должно работать, если у вас нет мутатора для content
атрибут, который как-то этому помешает:
$item->content = substr($item->content, 0, 100);
return $item;
Это хорошо для одного случая использования. Если вы обнаружите, что вам нужно сделать это в других местах, вам следует добавить метод к вашей модели, который обрабатывает это для вас, или даже, возможно, новую модель, которая расширяет модель NewsItem и имеет мутатор set или get для содержимого приписывать.