2013-11-27 16 views
7

有一個查詢我用它來在運行mysql:Laravel 4,雄辯 - 聲明和運營商之間的

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

它工作正常,但laravel 4,使該查詢的唯一方法是有什麼東西像

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

這種方式似乎並沒有使用通常的時候工作,因爲我沒有相同的結果「選擇* ...」

任何想法?

只是爲了澄清我的要求: 對我來說,我沒有」 ...其中value1和值2" 之間列‘其中COMMUN之間的價值’ 所以,在我看來,但我不能用‘wherebetween’

+0

看看這篇文章在Laravel論壇:http://forums.laravel.io/viewtopic.php?pid=46789#p46789 – 2013-11-27 00:39:33

回答

9

這應該這樣做...

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

我認爲這是相當安全的,但你可能需要清潔$val第一。

+0

拉拉維爾是否幫你清理了這個? – Rafael

+2

@Rafael,@ user1669496,Laravel不會對變量做任何事情。你需要這樣調用:'$ results = my_model :: select('*') - > whereRaw(「?between col1 and coL2」,['someValue']) - > get();'爲了安全查詢。 – DuckPuncher

32

你可以嘗試這樣的事情

// 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之間。

+0

感謝您的答覆。在我的情況下,問題是我的查詢中的輸入數據必須位於列之間。 –

+0

我沒有得到它,你能說得更具描述性嗎? –

+3

@ WereWolf-TheAlpha你正在對「數組」之間的「數組(3,6)」進行硬編碼,但他需要在表中的2列之間進行選擇 - 「SELECT * FROM table WHERE $ desiredValue BETWEEN col1 AND col2 ' – Prefix

0

,而無需創建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(); 
0

使用其中()沒有工作,因爲你有逆轉的比較操作你的雄辯的例子。如果你想檢索行其中val是col1和COL2之間,它應該是這樣的:

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

注意比較操作是相反的說「其中val大於或等於COL1和val小於或等於col2。「

您可能必須眯起一點才能看到它。 :)