我对Laravel 5.4和Eloquent Query构建器非常绝望。 我正在尝试通过用户名和密码检索用户。
我在db:ID,USERNAME,PASSWORD
中跟踪了列以下查询对我有用:
$user = UserModel::where(['username' => $username])->first();
虽然这不是:
$user = UserModel::where(['password' => $password])->first();
我在查询之前打印出$username
和$password
,两者都是它们应该是的。
我可能做错什么?
编辑:
我尝试了以下相同结果的查询形式:
$user = UserModel::where('password', $password)->first();
$user = UserModel::where(['password' => $password])->first();
$user = UserModel::where('password', '=', $password)->first();
使用用户名的变体会产生与上述第一个完全相同的结果。
答案 0 :(得分:0)
密码不以纯文本格式保存,因此您必须先输入哈希
$password = Hash::make('plaintext');
$result = User::wherePassword($password)->first();
答案 1 :(得分:0)
问题解决了,但我不确定是什么造成的。 问题是,Eloquent与oci8驱动程序(oracle驱动程序)将所有列名转换为大写,但'password'是某种保留关键字,无法转换并保持小写。虽然Oracle区分大小写(对于列和表名称)但它不起作用。我将'密码'列的名称更改为'密码',一切都立即生效。