Как отделить пользовательские MySQL результаты, возвращаемые БД: select () в Laravel 7 - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь создать пользовательский конструктор запросов, в котором результаты, возвращаемые пользовательским запросом, возвращаются без перезаписи.

Я должен сделать это, поскольку 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 с помощью его методы.

Если у вас есть какие-либо предложения, чтобы сделать его лучше, пожалуйста, пожалуйста!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...