2016-11-08 115 views
1

我正在使用Laravel 5.2,我試圖用laravel雄辯來執行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 

但甲骨文預計此查詢:

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! – Boneist

+0

@Devon是的,我確定。我編輯了這個問題以查看錯誤消息。 – kodcu

回答

0

只是將這裏走出去的肢體,因爲我沒有馬上測試它的任何方式。

嘗試增加:

protected $table = '"ReportUsers"'; 

到模型。

如果它不起作用,我會刪除它。

+0

問題不僅在於表格名稱格式,而且還有表格屬性格式。像'name'應該是「名稱」。 – kodcu

+0

從評論看來,這只是大寫字母的情況。你是否嘗試過並確認? – Devon

0

我遇到了同樣的問題,只是對將要解決的OracleGrammar.php文件的第206行進行評論,它會測試它是否爲帶有大寫名稱的保留字。

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

文件路徑是於供應商> yajra-> laravel-oci8-> SRC-> Oci8->查詢 - >文法