Laravel:获取条件为

时间:2016-07-24 08:37:35

标签: php laravel eloquent logic

我有四个模型UserRewardRewardUnlockedRewardClaimed他们之间的关系是:

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

以下代码的问题在于我必须发送奖励清单,并在那里显示一个检查符号或十字标志,表示您已解锁奖励。

1 个答案:

答案 0 :(得分:0)

更清楚,我知道您需要在用户个人资料中显示奖励列表,包括解锁的任何奖励,分别使用支票标记和休息十字标志,
如果是这种情况,那么你可以使用属于你的用户表的许多关系来奖励表,并且一个状态列来跟踪奖励声明和奖励解锁,你可以将其作为枢轴属性访问,所以无论中间表中没有的奖励是什么未解锁,
您可以阅读Laravel文档中关于多对多关系以进一步了解https://laravel.com/docs/5.2/eloquent-relationships#many-to-many