加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel Eloquent找到复合键

发布时间:2020-12-14 19:44:15 所属栏目:大数据 来源:网络整理
导读:我最近开始使用Laravel 5作为框架.到目前为止,一切都是完全直截了当的,与它一起工作真的很棒.然而,目前我遇到了一些关于我的Eloquent模型的麻烦. 数据库表报告具有以下模式: | id | group_id | score | ... | group_id是引用groups表的外键.该表的主键是id
我最近开始使用Laravel 5作为框架.到目前为止,一切都是完全直截了当的,与它一起工作真的很棒.然而,目前我遇到了一些关于我的Eloquent模型的麻烦.

数据库表报告具有以下模式:

| id | group_id | score | ... |

group_id是引用groups表的外键.该表的主键是id和group_id的组合. id也不会自动增加,因为它是我正在使用的外部ID,以便于内部处理.

每个外部id可以为我的每个组一次出现,并且每个外部id都有不同的分数,因此是复合主键.

访问我的一个页面时,我想从外部数据源获取最新记录,并将它们与相应的数据库行匹配.如果它们不存在,我想创建它们.

我目前的这条路线代码是:

public function showReports ($id)
{
   $group = Group::findOrFail($id);

   foreach ($group->getLatestReports(20) as $reportElement)
   {
       $report = Report::find($reportElement['id']);
       if (is_null($report))
       {
           $report = new Report;
           // Fill values ...
           $report->save();
       }
   }
}

这显然不能按预期工作,因为它只查找id
(:: find($reportElement [‘id’])),而不是group_id.像往常一样我的问题,答案可能非常简单,但我现在似乎无法找到它.

解决方法

Model :: find仅适用于单列键.你可以传递一个数组,但这只是让它找到多行.

您需要将两个链接在一起以进行查询:

$report = Report::where('id','=',$reportElement['id'])
                ->where('group_id',$group->id)
                ->first();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读