自定义查找器选择相关模型Cakephp3中的字段

时间:2015-06-23 14:27:27

标签: mysql cakephp-3.0 query-builder

我有一个活动模型 hasMany 出席率,并在参与者中使用event_id。我想在自定义查找方法中选择考勤表中的某些字段,但是contains()方法不会连接这两个表。

public function findAttendanceDetails(Query $query) 
{
    return $query->contain('Attendances')
                ->select(['Gender' => 'Attendances.gender',
                            'Name' => 'Attendances.full_name'
                            ]);
}

我收到错误错误:SQLSTATE [42S22]:未找到列:1054 Champ'Andtendances.gender'inconnu dans字段列表,并想知道缺少什么。

当我使用 - > Join()方法而不是 - > contains()时,我得到了结果。

1 个答案:

答案 0 :(得分:0)

包含不太合适。你会找到类似的东西:

return $query->contain(['Attendances']);

这将抓住并返回完整的相关表出席。 Contain查找数组,而不是字符串值。

如果您想要关联表中的特定字段,可以尝试:

return $query->contain(['Attendances' => function ($q) {
    return $q
        ->select(['gender', 'full_name'])
    }
]);

您可以阅读有关使用包含here的更多信息。