Php 雄辩的查询错误

Php 雄辩的查询错误,php,oracle,laravel-5,eloquent,Php,Oracle,Laravel 5,Eloquent,我对Laravel5.4和雄辩的查询生成器感到非常绝望。 我正在尝试通过用户名和密码检索用户 我的数据库中有以下列:ID、用户名、密码 以下查询适用于我: $user = UserModel::where(['username' => $username])->first(); 而这一条不是: $user = UserModel::where(['password' => $password])->first(); 在查询之前,我将打印出$username和$pass

我对Laravel5.4和雄辩的查询生成器感到非常绝望。 我正在尝试通过用户名和密码检索用户

我的数据库中有以下列:ID、用户名、密码

以下查询适用于我:

$user = UserModel::where(['username' => $username])->first();
而这一条不是:

$user = UserModel::where(['password' => $password])->first();
在查询之前,我将打印出
$username
$password
,两者都是正确的

我可能做错什么?

编辑:

  • 是的,我确实用纯文本存储密码
  • 该方法是基于Zend xmlrpc服务器的API的一部分
  • PHP不返回任何错误或异常
  • Xmlrpc服务器返回“404未知错误”错误响应
  • 是的,我确信,这些值不包含任何不可见的字符,并且确实是正确的
  • 值在请求中是硬编码的,我也尝试在查询中直接硬编码,结果相同
  • 我使用的是Oracle(我想是11g)、Laravel5.4和PHP5.6
  • 值对正确,此用户名属于此密码,两者的格式与数据库中的格式完全相同
我尝试了以下形式的查询,结果相同:

$user = UserModel::where('password', $password)->first();   
$user = UserModel::where(['password' => $password])->first();
$user = UserModel::where('password', '=', $password)->first(); 

用户名的变化会导致与前面提到的完全相同的结果。

密码不是以纯文本形式保存的,因此您必须首先对输入进行哈希运算

$password = Hash::make('plaintext');
$result = User::wherePassword($password)->first();

问题解决了,尽管我不确定是什么原因造成的。
问题是,Eloquent with oci8驱动程序(oracle驱动程序)将所有列名转换为大写,但“password”是某种保留关键字,无法转换并保留为小写。虽然Oracle区分大小写(列和表名),但它不起作用。我将“密码”列的名称改为“密码短语”,所有操作都立即生效。

您真的以纯文本形式存储密码吗?好的。问题是,如果第一个得到了你想要的,而第二个没有,那么更多的是“它实际上找不到它”,而不是“有一个错误”。是的,这是一个不好的做法,但这只是测试用例,而不是生产。你得到了任何具体的错误消息吗?共享完整的信息,比如模式,密码的错误和示例密码以纯文本形式保存。它们不应该是,但它们是。请尝试此用户::where('password',$password)->first();