Open BARNZ opened 1 year ago
Thank you for reporting, I think this is a valid concern when working with an existing database.
I think PDO::ATTR_CASE
is for the column casing and I currently use lowercase, thus making that config contradicts the current setup. Maybe we can add another config for the wrapping?
I will review this further when I got the chance. Please do not hesitate to submit a PR if you can.
As a temporary workaround I would suggest overriding the getTable
method and adding DB::raw
to your model.
public function getTable()
{
return DB::raw('"' . ($this->table ?? Str::snake(Str::pluralStudly(class_basename($this)))) . '"');
}
EDIT: This would only work for table names though, the query builder would still be broken once columns with Natural Case is used.
Summary of problem or feature request
The database I'm trying to connect to has a table named like this:
"vwInt_dimProject"
. When I try to query this table with the query builder it auto-capitalises the table name resulting in"VWINT_DIMPROJECT"
which gives me the following error:select * from VWINT_DIMPROJECT
ORA-00942: table or view does not exist
Code snippet of problem
Simple model defined like this:
I have traced the problem down to this line here:
https://github.com/yajra/laravel-oci8/blob/9.x/src/Oci8/Query/Grammars/OracleGrammar.php#L275
If I comment out this
Str::upper
statement then everything works fine.Perhaps we can have a way to disable this line? Or make it respect the
PDO::ATTR_CASE
setting?System details