Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何比较id';在多对多关系中_Php_Laravel - Fatal编程技术网

Php 如何比较id';在多对多关系中

Php 如何比较id';在多对多关系中,php,laravel,Php,Laravel,我有具有m2m关系的“article”和“user”模型(具有user\u id和article\u id列的透视表)。 在ArticleController中,我需要检查用户是否是文章的作者之一,以便有权对文章执行更新/删除操作。 我可以从auth->user()->id获取当前记录的用户id。在这种情况下,您需要使用Laravel策略 我建议您查看此文档 如果您按照 只需先获取文章,然后检查它是否与经过身份验证的用户有关系 $article = Article::find($id); if

我有具有m2m关系的“article”和“user”模型(具有user\u id和article\u id列的透视表)。 在ArticleController中,我需要检查用户是否是文章的作者之一,以便有权对文章执行更新/删除操作。
我可以从auth->user()->id获取当前记录的用户id。

在这种情况下,您需要使用Laravel策略
我建议您查看此文档

如果您按照

只需先获取文章,然后检查它是否与经过身份验证的用户有关系

$article = Article::find($id);
if ($article->users()->where('id', Auth::user()->id)->get()->count() ) {
     //your code
}

我使用的策略内部有这样的算法。谢谢你的帮助

public function update(User $user, Article $article){
    //All articles id where user is author.
    $userArticles = UserArticle::where('user_id', $user->id)->get();

    $confirmFlag = false; //check flag.
    //We compare article ids that belong to user with article id that we want to edit.
    foreach ($userArticles as $userArticle) {
        if ($userArticle->article_id != $article->id) {
            $confirmFlag = false;
        } else {
            $confirmFlag = true;
            break; // if we found that article that we want to edit
            // is belong to user then we break our foreach with $confirmFlag=true.
        }
    }
    return $confirmFlag == true ? true : false;
}

根据你自己的回答,我想给你一个更好的方法

public function update(User $user, Article $article){
//All articles id where user is author.
  $userArticles = UserArticle::where('user_id', $user->id)->where('article_id', $article->id)->first();

  return $userArticles === null ? false : true;
}

请包含您当前的代码,以便我们可以查看当前的代码。如果您不包含代码,人们很难在这方面提供帮助。是否可以从文章表中获取users()?是的。如果您已经定义了文章和用户之间的多对多关系,这是可能的。返回的将是与该文章相关的列表用户。