2016-11-08 37 views
1

私はLaravel 5.2を使用していますが、laravel eloquentを使用してSQLクエリを実行しようとしています。OracleはLaravel SQLクエリを理解しません

しかし、Oracleはlaravelクエリを理解しません。ここで

はLaravelコードは次のとおりです。

public function postLogincheck(Request $request){ 


    $rules = array(
     'name' => 'required|min:3', 
     'password' => 'required|alphaNum|min:3' 
    ); 

    $messages = array(
     'required'=>':attribute alanı gereklidir.', 
     'min'=>':attribute alanına en az :min karakter girmelisiniz', 
     'alphaNum'=>':attribute alanına alfanümerik karakterler girebilirsiniz' 
    ); 

    $validator = Validator::make(Input::all(), $rules,$messages); 

    if ($validator->fails()) { 
     return Redirect::to('login') 
      ->withErrors($validator) 
      ->withInput(Input::except('password')); 
    } else { 

     if (Auth::attempt(array('name' => $request->name, 'password' => $request->password))) { 

      flash()->success('Giriş başarılı'); 

      return Redirect::to('/'); 

     } 

     flash()->error('Giriş başarısız'); 

     return Redirect::to('/login'); 
    } 

} 

このメソッドは、このようなlogin.And laravelコンバートログインクエリをユーザに確認する:このクエリを期待し

select * from (select * from ReportUsers where upper(name) = upper(tsim)) where rownum = 1 

が、Oracle:

select * from (select * from "ReportUsers" where upper("name") = upper('tsim')) where rownum = 1 

私はyajra laravel-oci8 connectorを使用してOracle DBを接続しています。

はまた、私は、この問題のこのエラー原因を取得しています:

Error Code : 942 
Error Message : ORA-00942: tablo veya görüntü mevcut degil 
Position : 29 
Statement : select * from (select * from ReportUsers where upper(name) = upper(:p0)) where rownum = 1 
Bindings : [tsim,tsim] 
(SQL: select * from (select * from ReportUsers where upper(name) = upper(tsim)) where rownum = 1) 

どのように私はこの問題を獲得することができますか?

おかげ

+0

そのことについてあなたは確か? SQLはかなり標準化されていますが、私はもはやOracleでは動作しませんが、テーブルやカラムの名前を引用することはこれまで覚えていません。エラーメッセージは何ですか? – Devon

+2

@Devonテーブル/カラム名が大文字と小文字を区別して定義されている場合は、それらを二重引用符で囲む必要があります。これは、一般的には完全なPITA imhoです! – Boneist

+0

@Devonはい私は確信しています。そして、私はエラーメッセージを見るために質問を編集しました。 – kodcu

答えて

0

はちょうど私が今それをテストのいずれかの方法を持っていないので、ここに手足に出て行くつもり。

protected $table = '"ReportUsers"'; 

をモデルに:

を追加してみてください。

動作しない場合は、これを削除します。

+0

問題はテーブル名のフォーマットだけでなく、テーブルのプロパティのフォーマットです。 'name'のように" name "でなければなりません。 – kodcu

+0

コメントから、それは大文字の場合にのみ当てはまるようです。これを試して確認しましたか? – Devon

0

私は同じ問題を抱えていました。解決するファイルOracleGrammar.phpの206行目にコメントして、大文字の名前を持つ予約語であればテストします。

// $ value = $ this-> isReserved($ value)? Str :: lower($ value):Str :: upper($ value);

ファイルパスがあるベンダー> yajra-> laravel-oci8-> src-> Oci8-> query->文法

関連する問題