Php 有没有一种方法可以在同一个查询中的多个位置使用相同的参数?
我正在从事一个基于Laravel5.7的项目,在这个项目中,Elount被用作ORM 我需要在数据库上执行原始SQL语句。但是,我的查询在多个位置使用相同的参数 下面是一个查询示例“这不是我真正的查询,更多的是为了解释问题。我的实际查询非常复杂,并且多次重复使用相同的参数”Php 有没有一种方法可以在同一个查询中的多个位置使用相同的参数?,php,laravel,laravel-5,pdo,eloquent,Php,Laravel,Laravel 5,Pdo,Eloquent,我正在从事一个基于Laravel5.7的项目,在这个项目中,Elount被用作ORM 我需要在数据库上执行原始SQL语句。但是,我的查询在多个位置使用相同的参数 下面是一个查询示例“这不是我真正的查询,更多的是为了解释问题。我的实际查询非常复杂,并且多次重复使用相同的参数” 从表中选择* 其中a介于:from和:to之间 和c>:来自 和d'2017-01-01 00:00:00','to'=>'2018-10-01 00:00:00']; 但这给了我以下的错误 SQLSTATE[HY093]
从表中选择*
其中a介于:from和:to之间
和c>:来自
和d<:至
我期待着下面的工作
$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']);
$resorces=DB::select('select*FROM table
其中a介于:from和:to之间
和c>:来自
和d<:to',['from'=>'2017-01-01 00:00:00','to'=>'2018-10-01 00:00:00'];
但这给了我以下的错误
SQLSTATE[HY093]:参数编号无效
如何使用Eloquent在同一查询中的多个位置重复使用相同的参数?是否需要此功能
$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]);
$from='2017-01-01 00:00:00';
$to='2018-10-01 00:00:00';
$resorces=DB::select('select*FROM table
在哪里?和之间?
和c>?
和d<?',[$从,$到,$从,$到];
这可能会有所帮助:
看起来这可能是一个bug,这个答案为解决方法提供了几个选项。这个怎么样
$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();
$from='2017-01-01 00:00:00';
$to='2018-10-01 00:00:00';
$resorces=DB::table('table')
->whereRaw('介于?和?'之间,[$from,$to])
->whereRaw('c>?',[$from])
->whereRaw('d<?',[$to])
->get();
在模型中创建动态查询范围
public function scopeQUERY ($query, $value1, $value2){
$query = DB::(YOUR QUERY);
return $query;
}
你的控制器
public function hello(Model name $Modelname){
$query = $Modelname->QUERY($value1, $value2);
}
文档我试图避免这样做,因为我有更多的参数,这表明它无法处理重复的命名参数:
public function hello(Model name $Modelname){
$query = $Modelname->QUERY($value1, $value2);
}