我正在使用laravel 4开发一个应用程序。我正在两个表上执行以下连接:
$listings = DB::table('user')
->join('listings', 'listings.agent_id', '=', 'user.id')
->where('user.user_level', '=', 3)
->get();
var_dump($listings);
这不按预期工作,但在var_dump中它返回我不希望它做的散列密码。
public 'password' => string '$2y$10$o58S16Tw2yc2uvcIs.cy3.lbmyFgUZjTl7nMdLzU2AVXeXVCY5xqK' (length=60)
我的用户模型中有:
protected $hidden = array('password');
但是,我认为这只是从Json的回应中隐藏它。所以,在这种情况下,我有两个问题:
密码输出不是很糟糕吗?它正在回归,但我仍然不喜欢它在那里的事实。显然,我不会在实时应用程序中使用这样的var_dump,但是信息存在的事实让我很紧张。
如果不好,我该如何预防呢?我想要表格中的所有其他信息。所以,我可以重新编写我的查询以返回除密码之外的所有内容,但是有更简单的方法吗?也许我遗漏了一些在我的查询中排除行的东西,而不是写出我想要的每一行?
答案 0 :(得分:4)
首先,我建议您为每个数据库表创建一个模型。
接下来,如果您使用的是DB :: table('user'),则不会使用指定$ hidden的User模型。这样就不会隐藏密码。
当你这样做时(例如):
$user = User::find(1); // Selects user with id of 1
return Response::json($user); // Gives JSON response
所有用户数据都将显示为JSON,不包含以下字段:
protected $hidden = ['password'];
我希望这可以帮助你;)