我刚开始学习使用 laravel 编程,当我不得不使用 foreach 打印出一些带有 id 的用户数据时,喜欢{{ $user->username }}{{ $user->somedata1 }}而其他部分看起来像路线Route::get('/some/{user}', 'SomeController@show');控制器public function show(User $user){return view(some.show)->with('user' $user)}用户表idusernamesomedata1somedata2passwordaddrbirthday...我开始考虑这不会调用其表行中的每个数据然后从中打印出用户名吗?因此冒着某种安全问题的风险,比如暴露密码、地址等敏感数据?如果是这样,我怎样才能隐藏特定的列不被调出?我必须从控制器手动准备数据吗?添加:示例中的控制器是否返回其行中的所有内容?
2 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
如果您希望从检索到的数据中隐藏特定列,您应该$hidden为模型定义一个属性:
class User extends Model
{
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = ['password','address'];
}
慕村9548890
TA贡献1884条经验 获得超4个赞
首先,即使您将密码暴露给视图,假设您使用的是 Laravel 的身份验证脚手架,也无需担心,因为密码是通过bcrypt
. 任何经过哈希处理的字符串都无法反转。
其次,你可以利用select()
Eloquent 的方法。您可以按如下方式执行此操作:
Model::select('column_1','column_2')->where('column_1', 'value')->get();
我认为这解决了你的问题。
- 2 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消