我有四个型号User
,Reward
,RewardUnlocked
,RewardClaimed
以及它们之间的关系是:
User
有很多RewardUnlocked
,=>(多对一)
User
有很多RewardClaimed
=>(多对一)
Reward
有很多RewardUnlocked
=>(多对一)
Reward
有很多RewardClaimed
=>(多对一)
问题的引入是,当特定条件变为真时,用户将首先解锁奖励,
现在的问题是,我想从Reward
表中获取所有奖励并显示给用户,并检查每个奖励,如果reward_id
存在,RewardUnlocked
则显示一个check sign
if not present然后显示cross sign
视图文件是一个header
文件,所以我通过ajax发送变量。
目前我的代码是
控制器 :
$rewards = App\Reward::all();
foreach ($rewards as $reward){
$list = App\User::with('unlocks')->where('user_id','=', Auth::user()->id)->first();
}
以下代码的问题是,我必须发送奖励列表,并在其中显示一个复选标记或十字符号,表明您已解锁奖励。
更清楚地说,我了解您需要在用户个人资料中显示一份奖励列表,其中包括解锁的所有奖励,分别为一个校验符号和一个十字符号(
如果是这样的话),那么您可以使用与您的用户表到奖励表,以及一个状态列以跟踪已领取的奖励和已解锁的奖励,您可以将其作为数据透视表属性访问,因此,
如果未解锁中间表中未包含的任何奖励,则可以在Laravel文档中阅读有关“多对多”的信息关系以进一步了解https://laravel.com/docs/5.2/eloquent-relationships#many-to-many
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句