如何使用Laravel执行多行查询?

4

我正在使用Laravel 5.2版本。我有一条原始的SQL语句需要执行。

以下是我的尝试:

DB::select( $sql );

然而,这对于第一个查询有效。如果我在同一次运行中执行另一个查询,我会得到以下错误。
FatalErrorException in Connection.php line 323: Cannot access empty property

所以,如果我执行这个操作。
DB::select( sql1 );

然后。
DB::select( $sql2 );

如何在同一运行时执行多个查询。

我会遇到错误吗?我需要在调用第二个查询之前重新初始化DB类吗?如果是这样,我该如何重置它?

更新

dd( $sql  );

我得到以下结果。
 "  SELECT TOP 1 '1' FROM survey_answer_defined INNER JOIN survey_answer_groups ON survey_answer_groups.id = survey_answer_defined.group_id WHERE survey_answer_groups.interview_id = '243' AND survey_answer_groups.control_id IN(300) AND 'E' IN('A','B','D','E')"

如果我尝试以下内容:
DB::select(DB::unprepared($sql)) 

我遇到了以下错误:
SQLSTATE[HY090]: [Microsoft][ODBC Driver Manager] Invalid string or buffer length (SQL: )
2个回答

4

您可以将SQL查询语句写在变量中并像以下一样传递吗:

\DB::unprepared( $mySQLQuery ); //mySQLQuery is complete query you want to be executed as you would do inside the DBMS..

希望这能有所帮助。祝好。

我正在尝试选择一个数据集。DB::raw或DB:unprepared将执行查询并返回true/false而不是数据集。此外,根据我的问题注释。DB::select(DB::unprepared($sql))会给我一个错误SQLSTATE[HY090]: [Microsoft][ODBC Driver Manager] Invalid string or buffer length (SQL:) - Junior

0

我弄明白了。

我认为在 Laravel 中选择“1”不起作用。

这是为了使查询工作而我所做的。

我改变了

SELECT TOP 1 '1' 
FROM survey_answer_defined INNER JOIN survey_answer_groups ON survey_answer_groups.id = survey_answer_defined.group_id WHERE survey_answer_groups.interview_id = '243' AND survey_answer_groups.control_id IN(300) AND 'E' IN('A','B','D','E')

SELECT TOP 1 survey_answer_defined.id 
FROM survey_answer_defined INNER JOIN survey_answer_groups ON survey_answer_groups.id = survey_answer_defined.group_id 
WHERE survey_answer_groups.interview_id = '243' AND survey_answer_groups.control_id IN(300) AND 'E' IN('A','B','D','E')"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接