2017-06-27 18 views
0

私はLaravel 5.4とEloquent Query Builderでかなり辛抱強くなります。 ユーザー名とパスワードでユーザーを取得しようとしています。私はデシベルで列を以下ましEloquent query error

:クエリ次のパスワード

、ID、USERNAMEは私のために働いている:

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

この1つはない間:

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

私はクエリの前に$username$passwordの両方が表示され、両方が正確になるはずです。

私はおそらく何が間違っていますか?

EDIT:

  • はい、私は本当にプレーンテキストでストアのパスワードを行います。
  • 方法は
  • PHPがエラーまたは例外
  • XMLRPCサーバー・リターン「404不明なエラー」障害応答を返さないのZend-XMLRPCサーバーに基づいてAPIの一部です。
  • はい、確かに、その値には見えない文字は含まれておらず、確かに正しいです。
  • 値は要求に応じてハードコードされていますが、同じ結果を持つクエリで直接ハードコーディングを試みました。
  • 私はOracleを使用しています(11gだと思います)、Laravel 5.4、PHP 5.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(); 
+1

実際にパスワードをプレーンテキストで保存していますか? –

+0

それは、もし第1のものがあなたが望むものが得られ、第2のものが得られないのであれば、それは "誤りがある"より "実際にはそれを見つけることができない" – apokryfos

+0

はい、私はそれは悪い習慣ですが、これは単なるテストケースであり、生産ではありません。 –

答えて

0

問題解決althoughtをハッシュしなければならないので、

0

パスワードがプレーンテキストで保存されません。 問題は、oci8ドライバ(oracleドライバ)のEloquentがすべての列名を大文字に変換するが、 'password'は何らかの種類の予約済みキーワードであり、変換できず、小文字のままであるということでした。 Oracleは大文字と小文字を区別しますが(列名と表名の場合)、機能していませんでした。私は 'パスフレーズ'に 'パスワード'列の名前を変更し、すべてがすぐに働いた。

+0

パスワードはプレーンテキストで保存されます。彼らはいけませんが、彼らはそうです。 –

+0

このユーザーを試してみてください。::( 'password'、$ password) - > first(); –

+0

私は成功しなかった、編集された質問を参照してください。 –

関連する問題