Php 派遣一名有说服力的人到拉雷维尔查看保险箱会吗?

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 ... 我开始想,这不应该调用表行中的所有数据,然后从中打印出用户名吗?因此冒着某

我刚开始学习使用laravel编程,当我不得不使用foreach打印一些id为的用户数据时

而其他部分看起来像

路线

控制器

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'];
}