Laravel 4,雄辩 - 声明和运营商之间

Sha*_*son 8 php mysql query-builder laravel eloquent

我用一个查询在mysql中运行:

select * from my_table where $val between col1 and coL2;
Run Code Online (Sandbox Code Playgroud)

它运行正常,但是使用laravel 4,进行查询的唯一方法就是使用类似的东西

my_model::where('col1','>=',$val)->where('col2','<=',$val)
Run Code Online (Sandbox Code Playgroud)

这种方式似乎不起作用,因为在使用通常的"select*..."时我没有相同的结果

任何的想法 ?

只是为了澄清我的要求:在我的情况下,我没有"...在value1和value2之间的列",但"在commun之间的值"所以在我看来,我不能使用"wherebetween"

The*_*pha 32

你可以尝试这样的事情

// Get records whose id between 3 and 6
$users = User::whereBetween('id', array(3, 6))->get();
Run Code Online (Sandbox Code Playgroud)

或者使用变量

$id = 'id';
$from = 1;
$to = 5;
$users = User::whereBetween($id, array($from, $to))->get();
Run Code Online (Sandbox Code Playgroud)

这将获得ID其间1和之间的所有记录5.

  • @ WereWolf -TheAlpha你是硬编码"之间"值`array(3,6)`,但是他需要在表中的2列之间进行选择 - `SELECT*FROM table WHERE $ desiredValue BETWEEN col1 AND col2` (3认同)

use*_*496 9

这应该做到......

$results = my_model::select('*')->whereRaw("$val between col1 and coL2")->get();

我觉得这很安全,但你可能需要先清理一下$val.

  • @ Rafael,@ user1669496,Laravel对变量没有任何作用.你需要像这样调用:`$ results = my_model :: select('*') - > whereRaw("?col1和coL2之间",['someValue']) - > get();`用于安全查询. (2认同)