我有一个活动模型 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()时,我得到了结果。
答案 0 :(得分:0)
包含不太合适。你会找到类似的东西:
return $query->contain(['Attendances']);
这将抓住并返回完整的相关表出席。 Contain查找数组,而不是字符串值。
如果您想要关联表中的特定字段,可以尝试:
return $query->contain(['Attendances' => function ($q) {
return $q
->select(['gender', 'full_name'])
}
]);
您可以阅读有关使用包含here的更多信息。