2 回答

TA貢獻1788條經驗 獲得超4個贊
如果您希望新注冊的用戶看到所選類別下的所有以前的警報,基本上就是說登錄用戶應該看到這些類別下的所有警報。
我不認為將 aalert與 a聯系起來user會給你帶來任何好處。如果有的話,它會給你增加一層額外的復雜性。
現在,如果您想跟蹤 which usersread which alert,您可以使用該alert_user表。基本上,當 auser讀取一個alert. created_at將告訴您用戶閱讀的確切時間alert,因此read也不需要標志。
并且,為了顯示警報,您可以查詢,例如,與登錄用戶沒有關系記錄的警報。你可以使用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();
如果您只想顯示推文而不排除經過身份驗證的用戶:
Alert::whereHas('categories', function($query) use ($category_id_array){
$query->whereIn('category_id', $category_id_array);
})->get();

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