Я использую конструктор запросов Laravel для извлечения некоторых данных из базы данных sqlsrv.Таблица, которую я ищу, это dbo.[Reukema Blocq Maneschijn BV$Time Slot (Weighbridge)]
.Не мой выбор.База данных разработана другой компанией.
Я получаю ошибку General error: 20018 Invalid object name
при выполнении моего запроса.Я дважды проверил имя на наличие опечаток, но не смог его найти.
Что я обнаружил, так это проблему при компиляции запроса.Это мой код для проверки проблемы:
$query = $connection->query()
->from('Reukema Blocq Maneschijn BV$Time Slot (Weighbridge)')
->toSql()
Когда я сбрасываю $query
, я получаю следующее:
string(67) "select * from [Reukema Blocq Maneschijn BV$Time Slot ](Weighbridge)"
]
здесь не в том месте.
Эта проблема сохраняется, даже когда я использую помощник raw()
:
$query = $connection->query()
->from($connection->raw('dbo.[Reukema Blocq Maneschijn BV$Time Slot (Weighbridge)]'))
->toSql()
Даже в этом последнем примере ходы ]
от конца строки до непосредственно перед (
.
Почему это так?Мне не хватает важного правила / механизма для компиляции запросов sqlsrv?
Следующий код работает.Это делает меня странным:
$connection->select('select [Time Slot] as [id] from [Reukema Blocq Maneschijn BV$Time Slot (Weighbridge)]');
Так что я думаю, что в методе SqlServerGrammar@compileFrom
что-то не так.Почему Laravel компилирует это так?