当前位置: 首页 > 知识库问答 >
问题:

有没有一种方法可以在同一个查询中的多个位置使用相同的参数?

司寇正志
2023-03-14

我正在从事一个基于Laravel5.7的项目,在这个项目中,Elount被用作ORM。

我需要在我的数据库上执行一个原始SQL语句。但是,我的查询在多个地方使用相同的参数

这里有一个查询示例“这不是我真正的查询,更多的是为了解释问题。我的实际查询非常复杂,多次重用相同的参数”

SELECT * FROM table
WHERE a BETWEEN :from AND :to
AND c > :from
AND d < :to

我期待着下面的工作

$resorces = DB::select('SELECT * FROM table
    WHERE a BETWEEN :from AND :to
    AND c > :from
    AND d < :to', ['from' => '2017-01-01 00:00:00', 'to' => '2018-10-01 00:00:00']);

但这给了我以下错误

SQLSTATE[HY093]:参数编号无效

如何在同一查询中使用Eloquent在多个位置重复使用相同的参数?

共有3个答案

翁良弼
2023-03-14

在模型中创建动态查询范围。

public function scopeQUERY ($query, $value1, $value2){

      $query = DB::(YOUR QUERY);

      return $query;
}

你的控制器

public function hello(Model name $Modelname){

         $query = $Modelname->QUERY($value1, $value2);

}

文件https://laravel.com/docs/5.7/eloquent#query-scopes

杜翰林
2023-03-14

这个怎么样?

$from = '2017-01-01 00:00:00';
$to = '2018-10-01 00:00:00';
$resorces = DB::table('table')
    ->whereRaw('a BETWEEN ? AND ?', [$from, $to])
    ->whereRaw('c > ?', [$from])
    ->whereRaw('d < ?', [$to])
    ->get();
邹胜泫
2023-03-14

你喜欢这个工作吗?

$from = '2017-01-01 00:00:00';
$to = '2018-10-01 00:00:00';
$resorces = DB::select('SELECT * FROM table
    WHERE a BETWEEN ? AND ?
    AND c > ?
    AND d < ?', [$from, $to, $from, $to]);
 类似资料:
  • 问题内容: 假设我有以下代码: 这段代码的问题在于,协程内部的循环永远不会完成第一次迭代,而大小会不断增加。 为什么会这样发生,我该怎么解决? 我无法摆脱单独的线程,因为在我的真实代码中,我使用了单独的线程与串行设备进行通信,而且我还没有找到使用的方法。 问题答案: 不是线程安全的,因此您不能直接在多个线程中直接使用它。相反,您可以使用,它是提供线程感知队列的第三方库: 还有(全披露:我写了它),

  • 问题内容: 我以前用C编写过代码,但是我是Java的新手,我正在为OOP类编写教程,这几乎是我第一次正式学习该语言。 在本教程中,我的教授制作了一个类,该类将用于测试我必须自己做的I / O助手类 (顺便说一句,该教程是(a)可选的,(b)不是用于标记的,所以我是(c)我以前从未使用过Java,而我的许多其他同学都没有使用过Java,所以我落后了)。 无论如何。在他制作的测试类中,他将方法“ ge

  • 我需要写一个私人的方法在java接收2数组。有没有办法使他们必须是相同的长度? 比如: 公共静态无效方法(int[]arr1,int[]arr2[arr1.length])

  • 我是从https://wallpapersden.com/street-fighter-fortnite-wallpaper/下载壁纸的。当我点击下载按钮时,另一个页面打开了“https://images.wallpapersden.com/image/download/street-fighter-fortnite_bgtoaw6umzqarawkpjrmbmdlrwzlbwu.jpg”,我想知

  • 问题内容: 我需要在Sql Server 2005中进行选择查询的解决方案。 我想查询返回两个结果集,每个结果集恰好包含符合特定条件的所有记录的一半。我尝试将TOP 50 PERCENT与Order By一起使用,但是如果表中的记录数为奇数,则两个结果集中都会显示一条记录。我不想在记录集上重复任何记录。例子: 我有一个简单的表,其中包含TheID(PK)和TheValue字段(varchar(10