2 回答

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您希望新注冊(cè)的用戶看到所選類別下的所有以前的警報(bào),基本上就是說登錄用戶應(yīng)該看到這些類別下的所有警報(bào)。
我不認(rèn)為將 aalert與 a聯(lián)系起來user會(huì)給你帶來任何好處。如果有的話,它會(huì)給你增加一層額外的復(fù)雜性。
現(xiàn)在,如果您想跟蹤 which usersread which alert,您可以使用該alert_user表?;旧?,當(dāng) auser讀取一個(gè)alert. created_at將告訴您用戶閱讀的確切時(shí)間alert,因此read也不需要標(biāo)志。
并且,為了顯示警報(bào),您可以查詢,例如,與登錄用戶沒有關(guān)系記錄的警報(bào)。你可以使用whereDoesntHave. 例如,像這樣:
Alert::whereHas('categories', function($query) use ($category_id_array){
$query->whereIn('category_id', $category_id_array);
})->whereDoesntHave('users', function($query) use ($user_id){
$query->where('user_id', $user_id); //user_id is auth()->user()->id
})->get();
如果您只想顯示推文而不排除經(jīng)過身份驗(yàn)證的用戶:
Alert::whereHas('categories', function($query) use ($category_id_array){
$query->whereIn('category_id', $category_id_array);
})->get();

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果您希望選擇一個(gè)用戶,然后確定他是否有任何未讀警報(bào),那么您可以這樣做:
foreach($user->alerts as $alert){
if($alert->read == 1){
//do something with that particular alert
}
}
如果要確定是否已讀取特定警報(bào),可以像這樣搜索它:
Alert::where('id', '=', $alert_id)->where('read', '=', 1)->first();
//will return alert or null
- 2 回答
- 0 關(guān)注
- 139 瀏覽
添加回答
舉報(bào)