我有四个模型User
,Reward
,RewardUnlocked
,RewardClaimed
他们之间的关系是:
User
有许多RewardUnlocked
,=>(多对一)
User
有许多RewardClaimed
=>(多对一)
Reward
有许多RewardUnlocked
=>(多对一)
Reward
有许多RewardClaimed
=>(多对一)
问题的引入是,当特定条件成立时,用户将首先解锁奖励,
现在的问题是我想从Reward
表中获取所有奖励并向用户显示,并检查每个奖励reward_id
是否存在于RewardUnlocked
然后显示check sign
如果不存在,则显示cross sign
视图文件是header
文件,所以我通过ajax发送变量。
目前我的代码是
控制器:
$rewards = App\Reward::all();
foreach ($rewards as $reward){
$list = App\User::with('unlocks')->where('user_id','=', Auth::user()->id)->first();
}
以下代码的问题在于我必须发送奖励清单,并在那里显示一个检查符号或十字标志,表示您已解锁奖励。
答案 0 :(得分:0)
更清楚,我知道您需要在用户个人资料中显示奖励列表,包括解锁的任何奖励,分别使用支票标记和休息十字标志,
如果是这种情况,那么你可以使用属于你的用户表的许多关系来奖励表,并且一个状态列来跟踪奖励声明和奖励解锁,你可以将其作为枢轴属性访问,所以无论中间表中没有的奖励是什么未解锁,
您可以阅读Laravel文档中关于多对多关系以进一步了解https://laravel.com/docs/5.2/eloquent-relationships#many-to-many