Используйте библиотеку Hashids для хеширования идентификаторов в коллекции красноречия Laravel

Я собираю набор задач из базы данных как красноречивую коллекцию, а затем отправляю коллекцию своему представлению, где я делаю foreach, Здесь нет проблем. Кроме того, мне нужно сослаться на задачу id на мой взгляд (действие URL и т. д.). Но я, очевидно, не хочу этого в источнике, поэтому я использую это библиотека хешировать идентификатор. Но делать это в представлении кажется неправильным.

Есть ли способ хэширования идентификатора в модели или контроллере?

Вот как я вызываю коллекцию в моем контроллере:

$tasks = Auth::user()->tasks()->orderBy('created_at', 'desc')->get();

Вот как я сейчас хеширую идентификатор на мой взгляд:

<a href="{{ route('tasks.markascompleted', Hashids::encode($task->id)) }}">

Любая помощь?

3

Решение

Вы можете сделать это, используя метод доступа. Сначала добавьте новый атрибут вверху вашей модели задач:

protected $appends = ['hashid'];

Затем в той же модели создайте метод доступа, который заполняет атрибут:

public function getHashidAttribute()
{
return Hashids::encode($this->attributes['id']);
}

Если у вас есть такие, просто вызовите атрибут appended в вашем представлении:

<a href="{{ route('tasks.markascompleted', $task->hashid) }}">
5

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

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

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