我正在使用Laravel 5.2,我正试图用laravel eloquent执行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');
}
}
此方法检查用户是否登录。并且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 :(得分:0)
因为我现在没有任何测试方法,所以我想在这里试探一下。
尝试添加:
protected $table = '"ReportUsers"';
致你的模特。
如果它不起作用,我会删除它。
答案 1 :(得分:0)
我遇到了同样的问题,只是评论将要解决的OracleGrammar.php文件的第206行,它测试它是否是一个保留字,后面是大写的名字。
// $ value = $ this-> isReserved($ value)? Str :: lower($ value):Str :: upper($ value);
文件路径是vendor-> yajra-> laravel-oci8-> src-> Oci8-> query-> Grammars