[英]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');
}
然后,你可以繼續你想用做任何loggedInUser
和userLike
。
假設您在某個位置(在您的代碼中)有多個用戶,並且只想為當前登錄的用戶加載點贊,則可以
//$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_id
和post_id
創建一個新條目 (您還可以使用中間件檢查用戶是否直接在您的路線上登錄)
4)在視圖中
我將使用ajax調用來調用控制器方法。
不知道我是否忘記了什么,但希望可以對您有所幫助。
如果您不僅需要“喜歡”更多信息,請檢查多態關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.