如何使用laravel执行多个原始查询?

时间:2016-02-02 01:00:01

标签: php laravel laravel-4 laravel-5 laravel-5.2

我使用的是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 个答案:

答案 0 :(得分:3)

您可以在变量中编写sql查询并将其传递给以下内容:

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

希望这会有所帮助。欢呼声。

答案 1 :(得分:0)

我明白了。

我认为选择' 1'不适用于Laravel。

这是我为查询工作而做的

我改变了

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')"