6

我从数据库中获取一组任务作为一个雄辩的集合,然后我将集合发送到我执行foreach. 这里没有问题。除了,我需要id在我的视图中引用任务(URL 操作等)。但我显然不希望在源代码中使用这个,所以我使用这个库来散列 id。但是在视图中这样做似乎是错误的。

有什么方法可以散列模型或控制器中的 id 吗?

这是我在控制器中调用集合的方式:

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

这就是我目前在我看来散列 id 的方式:

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

2 回答 2

9

您可以使用访问器方法来做到这一点。首先,在 Task 模型的顶部附加一个新属性:

protected $appends = ['hashid'];

然后,在同一个模型中,创建一个填充属性的访问器:

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

一旦你有了这些,只需在你的视图中调用附加的属性:

<a href="{{ route('tasks.markascompleted', $task->hashid) }}">
于 2015-04-25T06:01:31.010 回答
0

你可以使用Laravel Hashslug库,它会自动为你完成这项工作,只需最少的设置:

class Task extends Model {
    use HasHashSlug;
}
<a href="{{ action('TaskController@markAsCompleted', $task) }}">
于 2020-09-09T23:01:23.437 回答