Я пытаюсь создать пользовательский конструктор запросов, в котором результаты, возвращаемые пользовательским запросом, возвращаются без перезаписи.
Я должен сделать это, поскольку database.tablename - это dynamici c и может отличаться для разных запросов, поступающих через браузер, для разных пользовательских сеансов. Вы можете думать о чем-то вроде phpMyAdmin или Heidi sql
Например, мне нужно запустить
SELECT Q.*, QA.* FROM db1.questions Q, db1.question_answers QA WHERE Q.id=QA.question_id
Теперь, так как у меня есть текстовая область запроса на моей странице где пользователь вводит любой запрос. Все остальные запросы выглядят нормально, но ВЫБЕРИТЕ. Для одной таблицы это все еще хорошо, и я могу перечислить результаты в порядке.
Результаты для вышеупомянутого запроса:
Array
(
[0] => stdClass Object
(
[id] => 1
[title] => Who invented PHP?
[description] => This is simple question about the inventor of PHP
[defaultmark] => 1.00000
[penalty] => 0.3333333
[deleted] => 0
[deleted_date] =>
[question_type_id] => 4
[creator_id] => 1
[created] => 2019-11-20 11:50:14
[modified] => 2019-12-02 15:25:47
[question_id] => 3
[answer] => True
[fraction] => 0
)
....
)
For, SELECT с JOIN и, возможно, с подзапросами, которые имеют проблему. Например, вышеприведенный запрос возвращает результаты, но поля прежней таблицы перезаписываются полями с тем же именем более поздней. Можно видеть, что у него есть только одно поле id
, в то время как у меня есть поля id
в обеих таблицах. То же самое для созданных, измененных fields.larav
Fyi, так как я использую Laravel, я создаю соединение на лету. Например:
\Config::set("database.connections.{$this->_config['session']['driver']}", $this->_config['session']);
DB::purge( $this->_config['session']['driver'] );
try {
$pdo = DB::connection()->getPdo();
} catch (\Exception $e) {
die("Could not connect to the database. Please check your configuration. error:" . $e );
}
DB::enableQueryLog();
Есть ли у вас какие-либо идеи по поводу решения этой проблемы, не выходя из Laravel Query Builder?
Я не могу думать о создании моделей на лету, а затем создавать собственные запросы SELECT с помощью его методы.
Если у вас есть какие-либо предложения, чтобы сделать его лучше, пожалуйста, пожалуйста!