【问题标题】:How to run more than just one query in laravel如何在 laravel 中运行多个查询
【发布时间】:2020-05-07 17:12:21
【问题描述】:

我需要在 Laravel 中运行不同的 SQL 查询:

SELECT * FROM TABLE; DROP TABLE; UPDATE something etc

通过网上冲浪,我意识到我需要使用 DB::unprepared($sql) 方法。问题是这个方法只返回 TRUE 或 FALSE。 由于我必须运行大量查询,因此我需要通过对查询进行分组来最小化查询数量,以免对 MySQL 施加负载。 有没有办法解决这个问题?

【问题讨论】:

  • 您提供的查询将只返回来自answers 的结果,因此运行此查询除了单独运行第二个查询之外什么都没有?
  • 你听说过雄辩吗?我假设你对 laravel 超级陌生。您可能只想遵循 laravel 介绍指南
  • 你为什么要这样做?
  • 您可能会从设置问题和答案之间的一些关系中受益,然后您可以使用 $question = Question::with('answer')->where('id', $id)->get(); 进行一些 Eloquent 急切加载,然后使用 $question->answer->answer_text_field 访问答案
  • @BertMaurau 而是从questions返回结果

标签: mysql laravel pdo


【解决方案1】:

我需要运行以下查询

不,你没有。

这不是一个查询,而是两个查询。因此,您必须分别运行这两个查询。这就是 Web 应用程序的工作方式。

使用 Eloquent 模型会是这样的

$question = Question::whereIn('id', [ 1 ])->get();
$answer = Answer::whereIn('id', [ 12 ])->get();

我需要通过对查询进行分组来最小化查询的数量,以免给 MySQL 带来负担。

不,你没有。像这样对查询进行分组不会减少查询的数量并且不会影响 MySQL 的负载

有没有办法解决这个问题?

初学者没有问题。像其他人一样,一个一个地运行查询。

【讨论】:

  • 嗯,Eloquent 与 Laravel 捆绑在一起,所以显然你可以使用它。但是使用 Eloquent 模型不是必需的。您可以对所有查询使用后续调用 DB::select。 SQL 查询从不“同时”执行,无论您如何调用它们。因此,只需一一调用它们就可以了。
猜你喜欢
  • 1970-01-01
  • 2020-01-02
  • 2020-06-20
  • 2021-02-13
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
相关资源
最近更新 更多