我創建了一個存盤陣列的會話,現在如果我想將更多專案添加到會話陣列中,我將面臨一個問題
if(session()->has('key')){
$tests = Test::all()->where('id', 3);
$res = collect($tests);
session()->push('key', $res);
}else{
$tests = Test::where('id', 1)->get();
$res = collect($tests);
session()->put('key', $res);
}
如果我死了并轉儲了會話結果,這就是我得到的

這是我想要的結果

uj5u.com熱心網友回復:
您出錯的地方是您正在獲取一組測驗并將其添加到陣列中,而不是單個測驗(我的作業基礎是您只想將一個測驗添加到會話中時間)。
采取你的第一行:
$tests = Test::all()->where('id', 3);
這只會回傳一個測驗,因為大概“id”是唯一的,但它會回傳一個包含一個測驗的集合,而不僅僅是測驗本身。
你可以這樣做只回傳一個測驗,而不是一個集合:
$test = Test::where('id', 3)->first();
但是(再次假設)“id”是唯一的,最簡單的方法是使用“find”,如下所示:
$test = Test::find(3);
session()->push('key', $test);
這將只回傳測驗。
如果您確實想一次性將多個測驗添加到會話中,請先獲取集合:
$tests = Test:where('id', '>', 10)->get();
然后遍歷它們并將每個測驗單獨添加到陣列中:
foreach($tests as $test) {
session()->push('key', $test);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/344467.html
標籤:拉拉维尔
上一篇:GoogleSheetsScript-如何根據另一個作業表中的某些欄位復制作業表
下一篇:花時間花在Laravel上
