簡體   English   中英

用戶登錄時的關系條件

[英]Relationship condition if user is logged in

我想創建一個檢查用戶是否喜歡帖子的關系。 為此,該關系需要檢查用戶是否已登錄,然后使用其user_id獲取類似記錄。 就像是:

public function userLike() {
    if (Auth::check()) return $this->hasOne('App\Like')->where('user_id', Auth::user()->id);
}

但是,這不起作用。 此外,如果用戶未登錄並且調用了此關系(默認情況下為該關系),它將返回錯誤。

正確的做法是什么?

如果要有條件地加載關系,則可以通過延遲加載來完成。 在您的示例中,您可以將關系定義為

public function userLike() {
    return $this->hasOne('App\Like', 'user_id');
}  

然后,在您的控制器(或其他任何地方)中,您可以檢查用戶是否有問題,當前是否已登錄該用戶。

$loggedInUser = auth()->user(); 
if($loggedInUser){
    $loggedInUser->load('userLike');
}  

然后,你可以繼續你想用做任何loggedInUseruserLike

假設您在某個位置(在您的代碼中)有多個用戶,並且只想為當前登錄的用戶加載點贊,則可以

//$users is a collection of multiple users - assumed
foreach($users as $user){
    if($user->email === auth()->user()->email){
        $user->load('userLike');
    }
}  

希望這可以幫助

這就是我要做的:

1)“喜歡”表

我首先要創建一個表來存儲所有“喜歡”,並在其中存儲“ post_id ”和“ user_id ”的列

2)建立關系

用戶模型

public function likes()
{
    return $this->belongsToMany('App\Post', 'likes', 'user_id', 'post_id');
}

郵政模型

public function likes()
{
    return $this->belongsToMany('App\User', 'likes');
}

3)Post Controller-方法

我將執行以下操作:

  • 檢查用戶是否登錄,否則拋出錯誤
  • 確保帖子存在,否則引發錯誤
  • 在類似表中使用user_idpost_id創建一個新條目

(您還可以使用中間件檢查用戶是否直接在您的路線上登錄)

4)在視圖中

我將使用ajax調用來調用控制器方法。

不知道我是否忘記了什么,但希望可以對您有所幫助。

如果您不僅需要“喜歡”更多信息,請檢查多態關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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