Я собираю набор задач из базы данных как красноречивую коллекцию, а затем отправляю коллекцию своему представлению, где я делаю foreach
, Здесь нет проблем. Кроме того, мне нужно сослаться на задачу id
на мой взгляд (действие URL и т. д.). Но я, очевидно, не хочу этого в источнике, поэтому я использую это библиотека хешировать идентификатор. Но делать это в представлении кажется неправильным.
Есть ли способ хэширования идентификатора в модели или контроллере?
Вот как я вызываю коллекцию в моем контроллере:
$tasks = Auth::user()->tasks()->orderBy('created_at', 'desc')->get();
Вот как я сейчас хеширую идентификатор на мой взгляд:
<a href="{{ route('tasks.markascompleted', Hashids::encode($task->id)) }}">
Любая помощь?
Вы можете сделать это, используя метод доступа. Сначала добавьте новый атрибут вверху вашей модели задач:
protected $appends = ['hashid'];
Затем в той же модели создайте метод доступа, который заполняет атрибут:
public function getHashidAttribute()
{
return Hashids::encode($this->attributes['id']);
}
Если у вас есть такие, просто вызовите атрибут appended в вашем представлении:
<a href="{{ route('tasks.markascompleted', $task->hashid) }}">
Других решений пока нет …