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.像往常一样我的问题,答案可能非常简单,但我现在似乎无法找到它.
Model::find仅适用于单列键.你可以传递一个数组,但这只是让它找到多行.
您需要将两个链接在一起where以进行查询:
$report = Report::where('id', '=', $reportElement['id'])
->where('group_id', '=', $group->id)
->first();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10094 次 |
| 最近记录: |