php - Laravel 尝试检查用户是否与帖子有关系

标签 php mysql laravel-5.4 relationship

我有帖子,用户可以保存这些帖子以供以后阅读。我创建了这种关系,我可以轻松保存或删除它们。问题是我无法检查帖子是否保存在前端。现在我写了一些代码来处理这个问题,但它似乎不起作用。这是我的 Controller 代码:

$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 传递给 View ,而不是使用 if 检查它的值 但问题是,无论我做什么 if (count($bestarticles) > 0) 返回 true 并且我在 View 中得到值 1。 有人知道我可能会错过什么吗?

这是我的用户 Controller 关系:

   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]);
}

但是您无需担心。我可以删除和添加。

或者是否有另一种方法来检查 View 中的现有关系,或者是否有更好的方法来检查 Controller 中的关系并将其传递到 View 中?

我使用的是 Laravel 5.4。

最佳答案

看起来好像您有一个 Article 模型的 Collection,并且您正在尝试确定它是否与 User 相关或不。

如果是这种情况,我建议您在最初查询 Article 模型时立即加载 User 关系。这样做的优点是使用一个查询来加载关系,而不是每个文章一个查询。

$userId = Auth::id();

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

有了这个Collection,因为我们已经专门加载了当前经过身份验证的User,所以您可以继续了解savedarticle 关系是否具有count1,表明 User 关系存在。

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

关于php - Laravel 尝试检查用户是否与帖子有关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47865622/

相关文章:

php - Ajax POST 请求未到达 PHP

mysql - 转换/清理表中格式错误的电子邮件地址

mysql - 我如何运行 while 循环来更新 phpMyAdmin 表中的记录?

mysql - laravel5.4 中 undefined variable

laravel - 如何在没有用户身份验证的情况下保护 API 端点

php - 包含国家、地区、城市的注册表 - 如何管理 200 万条 mySQL 记录?

javascript - 使用 json_encode() 转换

PHP:个人框架

java - 使用许多 VALUES (),(),(); 优化 MySQL INSERT;

php - Laravel 5.4 尚未设置门面根