我无法显示cakephp3中带有下划线的表格中的字段
我在一个确实存在的字段上得到这个错误。我无法显示TutoringTypes表中的任何字段。我的连接是错误的,我不知道我在哪里犯了错误,因为我相信我遵守了惯例。然而,文档中提到了复数表名,但给出了单数变量名作为示例 未找到列:“字段列表”中的1054未知列“tutoring_types.value”我无法显示cakephp3中带有下划线的表格中的字段,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我在一个确实存在的字段上得到这个错误。我无法显示TutoringTypes表中的任何字段。我的连接是错误的,我不知道我在哪里犯了错误,因为我相信我遵守了惯例。然而,文档中提到了复数表名,但给出了单数变量名作为示例 未找到列:“字段列表”中的1054未知列“tutoring_types.value” $query3 = $this->Lessons->find() ->contain(['Tutors', 'TutoringTypes']) ->sele
$query3 = $this->Lessons->find()
->contain(['Tutors', 'TutoringTypes'])
->select(['lessons.id','lessons.lesson_date','tutors.id','tutors.first_name','tutors.last_name','lessons.tutoring_type_id',
'tutoring_types.value'])
->where(['Lessons.lesson_date >' => $a3,'Lessons.lesson_date <' => $a4,
'OR' => [['lessons.tutoring_type_id' => 2], ['lessons.tutoring_type_id' => 1]]
]);
Lessons Model
public function initialize(array $config)
{
parent::initialize($config);
$this->belongsTo('TutoringTypes', [
foreignKey' => 'tutoring_type_id'
]);
//////
SELECT
lessons.id AS `lessons__id`,
lessons.lesson_date AS `lessons__lesson_date`,
tutors.id AS `tutors__id`,
tutors.first_name AS `tutors__first_name`,
tutors.last_name AS `tutors__last_name`,
lessons.tutoring_type_id AS `lessons__tutoring_type_id`,
tutoring_types.value AS `tutoring_types__value`
FROM
lessons Lessons
LEFT JOIN tutors Tutors ON Tutors.id = (Lessons.tutor_id)
LEFT JOIN tutoring_types TutoringTypes ON TutoringTypes.id = (Lessons.tutoring_type_id)
WHERE
(
Lessons.lesson_date > '2015-05-30'
AND Lessons.lesson_date < '2016-06-01'
AND (
lessons.tutoring_type_id = '2'
OR lessons.tutoring_type_id = '1'
)
)
$query3=$this->Lessons->find()
->包含(['Tutors','TutoringTypes'])
->选择(['classes.id'、'classes.classes\u date'、'tutors.id'、'tutors.first\u name'、'tutors.last\u name'、'classes.tutoring\u type\u id',
'辅导类型.值'])
->其中(['Lessons.lesson\u date>'=>$a3,'Lessons.lesson\u date'教程类型\u id'
]);
//////
挑选
lessons.id为'lessons\uu id`,
lessons.lesson\u日期为'lessons\u lesson\u date',
tutors.id作为“tutors\uu id”,
tutors.first\u name作为“tutors\u first\u name”,
tutors.last_name作为“tutors__last_name”,
lessons.tutoring\u type\u id为'lessons\u tutoring\u type\u id`,
tutoring\u types.value作为“tutoring\u types\u value”
从…起
教训
LEFT JOIN tutors tutors ON tutors.id=(Lessons.tutor\u id)
LEFT JOIN tutoring_types TutoringTypes ON TutoringTypes.id=(Lessons.tutoring_type_id)
哪里
(
Lessons.Lessons_日期>'2015-05-30'
和经验教训。经验教训日期<'2016-06-01'
及(
lessons.tutoring\u type\u id='2'
或lessons.tutoring\u type\u id='1'
)
)
事情不是这样做的。在查询中,必须使用注册/选择它们的表/关联别名,而不是实际的表名 默认情况下,别名遵循表类名约定,即复数和驼峰大小写/大写。因此,您可以使用
TutoringTypes
,而不是TutoringTypes
,只需查看生成的SQL中的别名即可
复数表名,单数变量名示例是一种不同的约定,它与表别名无关,而是与关联类型(1:n
/n:n
=复数,n:1
/1:1
=单数)和实体(一个实体=一条记录,因此使用单数名称)有关
顺便说一句,您收到的错误仅适用于
tutoringu类型
,因为您使用的DBMS以不区分大小写的方式处理标识符,即课程
将匹配课程
,但tutoringu类型
当然不会匹配tutoringtype
,因为不区分大小写处理时甚至都不一样。事情不是这样做的。在查询中,必须使用注册/选择它们的表/关联别名,而不是实际的表名
默认情况下,别名遵循表类名约定,即复数和驼峰大小写/大写。因此,您可以使用TutoringTypes
,而不是TutoringTypes
,只需查看生成的SQL中的别名即可
复数表名,单数变量名示例是一种不同的约定,它与表别名无关,而是与关联类型(1:n
/n:n
=复数,n:1
/1:1
=单数)和实体(一个实体=一条记录,因此使用单数名称)有关
顺便说一句,您收到的错误仅适用于
tutoringu类型
,因为您使用的DBMS以不区分大小写的方式处理标识符,即课程
将匹配课程
,但tutoringu类型
当然不会匹配tutoringtype
,因为它在不区分大小写时甚至不一样。你是对的,我确实对区分大小写的类型感到困惑。我认为文档可以让这一点更清楚,因为在查询中使用小写名称的模型是行不通的。无论如何,谢谢。你是对的,我确实对区分大小写的类型感到困惑。我认为文档可以让这一点更清楚,因为在查询中使用小写名称的模型是行不通的。无论如何,谢谢。