• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Laravel试图检查用户是否与帖子有关系

php 来源:Nikonah 6次浏览

我有帖子,用户以后可以保存这些帖子。我创建了这个关系,我可以很容易地保存或删除它们。问题是我无法检查帖子是否保存在前端。现在我编写了一些代码来处理这个问题,但似乎并不奏效。这里是我的控制器代码:Laravel试图检查用户是否与帖子有关系

$articleFlag = 1; 
$userID = Auth::User()->id; 

if (count($bestarticles) > 0) { 
    foreach ($bestarticles as $bestarticle) { 
     $saveddata = DB::table('savearticle')->where('user_id', $userID && 'article_id', $bestarticle); 

     if (count($saveddata) > 0) { 
      $articleFlag = 1; 
     } else { 
      $articleFlag = 2; 
     } 
    } //foeach endes here 
} //first if endes here 

,比我通过$articleFlag到视图不是检查它与if 值但问题是,无论我做什么if (count($bestarticles) > 0)返回true,我的观点获得价值1 。 有没有人知道我可能会错过什么?

这里是我的用户控制器relationshio:

function savedarticle(){ 
    return $this->belongsToMany('App\User', 'savearticle', 'user_id', 
    'article_id'); 
    } 

,并在这里不用,我使用的保存和删除功能:

function savethearticle(Article $article){ 
    $this->savedarticle()->syncWithoutDetaching([$article->id]); 
} 
function removethearticle(Article $article){ 
    $this->savedarticle()->detach([$article->id]); 
} 

但你没有任何需要担心。我可以删除和添加。

还有另一种方法来检查视图中的现有关系或更好的方法来检查它在控制器中并进入视图?

我正在使用Laravel 5.4。


===========解决方案如下:

看起来好像你有ArticleCollection模型,你要确定它是否是有关User与否。

如果是这种情况,当您最初查询Article模型时,我会建议急于加载User关系。这具有使用一个查询加载关系的优点,而不是每Article一个。

$userId = Auth::id(); 

$articles = Article::with(['savedarticle' => function ($query) use ($userId) { 
    return $query->where('user_id' => $userId); 
}])->get(); 

有了这个Collection,因为我们已经专门装目前已验证的User,进而你就可以知道,如果savedarticle关系有1一个count,该User关系存在。

foreach ($articles as $article) { 
    if ($article->savedarticle->count()) { 
     // User has already saved article 
    } else { 
     // User has not saved article 
    } 
} 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)