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 解决方法
Model :: find仅适用于单列键.你可以传递一个数组,但这只是让它找到多行.
您需要将两个链接在一起以进行查询: $report = Report::where('id','=',$reportElement['id']) ->where('group_id',$group->id) ->first(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |