您好,匿名用户

无指定关联字段,通过A表的数据更新B表的某个字段

0 投票

有两张表,一张用户表,一张文章表,用户通过发表文章预测比赛结果。
现在假定所有文章都已结算完(用is_hit表示文章是否猜中结果,1=>未结算 2猜中 3=>未猜中)
然后取每位用户的最近十篇文章来获得命中率
因为是对所有用户一次性更新信息的,我写的代码如下

$users = User::where('status',2)->get(); //先把所有状态正常的用户取出来
foreach ($users as $user){
    $articles = Articles::where('user_id',$user->id)->where('is_hit','>',1)->orderByDesc('id')->take(10)->get(); //取用户已经结算(is_hit>1)的最近的十篇文章
    foreach ($articles as $article){
        if ($article->is_hit ==2){
            $ids[] = $article->id;  //把已猜中的文章id放入数组里
        }
        $user->update(['hit_num'=>count($ids)]);
    }
}

这样写的结果是,文章找不到对应的用户id,导致$ids这个数组是累加的情况,比如:
有A、B两个用户,A的文章猜中3篇,B的文章猜中5篇,$ids第一次存入的数据是3,故A的hit_num字段更新是正确的,而第二次$ids累加了第一次的数据,导致B的hit_num的值为8(正确应为5)
请问大佬们有什么好的解决办法,感谢

用户头像 提问 6月18日 @ Katarina 中士 (1,341 威望)
分享到:

你的回答

隐私保护: 您的邮箱仅用于发送系统通知。
请输入验证码:
    图片验证码看不清?
登录注册后不会被要求输入验证码。

提一个问题:

相关问题

0 投票
1 回复 122 阅读
0 投票
1 回复 115 阅读
0 投票
1 回复 103 阅读
0 投票
1 回复 97 阅读
用户头像 提问 2012年 12月1日 @ Karthus 中士 (1,242 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...