簡體   English   中英

如何在Laravel ORM中使用相同的輸入多次獲得相同的結果?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM