Php 如何比较id';在多对多关系中
我有具有m2m关系的“article”和“user”模型(具有user\u id和article\u id列的透视表)。 在ArticleController中,我需要检查用户是否是文章的作者之一,以便有权对文章执行更新/删除操作。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
我可以从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()?是的。如果您已经定义了文章和用户之间的多对多关系,这是可能的。返回的将是与该文章相关的列表用户。