Laravel 4,雄辩-介于语句和运算符之间


Laravel 4, eloquent - between statement and operators

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

select * from my_table where $val between col1 and coL2;

它工作得很好,但对于laravel 4,进行查询的唯一方法是使用类似的东西

my_model::where('col1','>=',$val)->where('col2','<=',$val)

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

知道吗?

只是为了澄清我的请求:在我的例子中,我没有"…在value1和value2之间的where列",而是"在communi之间的where value"所以在我看来,我不能使用"wherebetween"

您可以尝试类似的

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

或使用可变

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

这将获得其ID15之间的所有记录。

这应该做到…

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

我认为这很安全,但您可能需要先清洁$val

在不创建MySQL模型的情况下,我们可以生成如下查询:

// If column value need to checked between value 1 and value 2
$DBConnection->table('users')->whereBetween('id', array(3, 6))->get();
// If value need to checked between column 1 and column 2 value
$DBConnection->->table('users')->whereRaw("$val between col1 and col2")->get();

您使用where()的雄辩示例不起作用,因为您颠倒了比较运算符。如果您想检索val在col1和col2之间的行,它应该是这样的:

my_model::where('col1','<=',$val)->where('col2','>=',$val)

请注意,比较运算符被反转为"其中val大于或等于col1,val小于或等于col2。"

你可能需要眯着眼才能看到它。:)