Php 派遣一名有说服力的人到拉雷维尔查看保险箱会吗?
我刚开始学习使用laravel编程,当我不得不使用foreach打印一些id为的用户数据时 像 而其他部分看起来像 路线 控制器Php 派遣一名有说服力的人到拉雷维尔查看保险箱会吗?,php,laravel,Php,Laravel,我刚开始学习使用laravel编程,当我不得不使用foreach打印一些id为的用户数据时 像 而其他部分看起来像 路线 控制器 public function show(User $user){ return view(some.show)->with('user' $user) } 用户表 id username somedata1 somedata2 password addr birthday ... 我开始想,这不应该调用表行中的所有数据,然后从中打印出用户名吗?因此冒着某
public function show(User $user){
return view(some.show)->with('user' $user)
}
用户表
id
username
somedata1
somedata2
password
addr
birthday
...
我开始想,这不应该调用表行中的所有数据,然后从中打印出用户名吗?因此冒着某种安全问题的风险,比如暴露密码、地址等敏感数据
如果是这样,我如何隐藏特定的列以避免被调用?我必须从控制器手动准备数据吗
增加:
示例中的控制器是否返回其行中的所有内容?首先,即使您向视图公开密码,鉴于您使用的是Laravel的身份验证框架,也不必担心,因为密码是通过
bcrypt
散列的。任何散列的字符串都不能反转
第二,您可以使用Eloquent的select()
方法。您可以按如下方式执行此操作:
Model::select('column_1','column_2')->where('column_1', 'value')->get();
我想这就解决了你的问题。如果你想从检索到的数据中隐藏特定的列,你应该为你的模型定义一个
$hidden
属性:
class User extends Model
{
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = ['password','address'];
}
谢谢你的回答!但我忘了问控制器是否返回其行中的所有内容。。是吗?每次调用该模型时都必须使用
select()
,这有点麻烦。最好按照其他答案的建议,在模型上使用$hidden
。
Model::select('column_1','column_2')->where('column_1', 'value')->get();
class User extends Model
{
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = ['password','address'];
}