Laravel Eloquent找到复合键

Pad*_*rom 4 php laravel eloquent laravel-5

我最近开始使用Laravel 5作为框架.到目前为止,一切都是完全直截了当的,与它一起工作真的很棒.然而,目前我遇到了一些关于我的Eloquent模型的麻烦.

数据库表reports具有以下模式:

| id | group_id | score | ... |
Run Code Online (Sandbox Code Playgroud)

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();
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*ess 8

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

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

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