[英]How to get same result multiple times with same inputs in laravel ORM?
我有不同的輸入字段,其中兩個是視圖中的name_id []和aussehen []。例如,如果用戶為name_id輸入了兩個相同的值(1,1),也為aussehen輸入了相同的值(1,1)。我在下面運行此查詢。
$aussehen=Stufen::whereIN('name_id', $name_id)
->whereIN('stufe',$aussehen)
->get();
當dd($ aussehen)時,我只能得到一個數組。 而我想擁有兩個相同的數組,因為用戶兩次輸入了相同的值。 但是,如果用戶選擇兩個不同的值,例如name_id的(1,2)和aussehen的(3,4),那么它將顯示兩個期望值的正確結果。 現在,即使用戶輸入了所需的時間相同的值,仍然可以獲得相同的結果嗎?
當您使用Model::whereIn('id', [1, 1, 1, 1])->get()
,您告訴您的SQL數據庫驅動程序SELECT * from model WHERE id IN (1, 1, 1, 1)
產生與SELECT * FROM model WHERE id = 1
相同的結果。
您應該知道,除了進行大量演算外,數據庫查詢是正在運行的PHP應用程序中最慢的事情之一。 因此,您不想對數據庫進行多個查詢。
我最好的猜測是:
$name_id = $request->input('name_id', []);
$aussehen = $request->input('aussehen', []);
$query = Stufen::whereIn('name_id', array_unique($name_id))
->whereIn('stufe', array_unique($aussehen))
->get()
->indexBy('name_id');
$collection = [];
foreach ($name_id as $nameId) {
$collection[] = $results[$nameId];
}
return collect($collection);
代碼的作用是重復(請記住,雄辯的模型是對象,所以它只是參考),將查詢的唯一索引結果返回到作為集合返回的php數組。
為了進行一點推斷,您應該將$query
直接返回到視圖中,並根據需要多次使用每個對象,因此您將僅使用$query
並刪除$collection
部分,這不是很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.