我有一张表jobs
,其结构类似于下面的内容:
id desc
1 Job Description
用于保存作业类别的表job_categories
:
id job_id category_id
1 1 2
2 1 3
3 1 4
因此,要在1
中获取ID为JobsController.php
的作业的类别,我写道:
$similar_conditions['JobCategory.job_id'] = 1;
$similar_jobs = $this->Job->find('all',array('conditions' => $similar_conditions));
我的工作模式Job.php
是:
class Job extends AppModel {
var $name = 'Job';
var $belongsTo = array('Qualification');
var $hasMany = array('JobCategory');
}
但它显示错误SQLSTATE[42S22]: Column not found: 1054 Unknown column 'JobCategory.job_id' in 'where clause'
。它生成的查询是:
SQL查询:SELECT
Job
。id
,Job
。job_title
,Job
。job_description
,Job
。job_skills
,Job
。contact_number
,Job
。contact_email
,Job
。qualification_id
,Job
。experience
,Job
。categories
,Job
。remarks
,Job
。support_image
,Job
。freshers_apply
,Job
。added_on
,Job
。status
,Qualification
。id
,Qualification
。name
FROMcakead
。jobs
ASJob
LEFT JOINcakead
。qualifications
ASQualification
ON (Job
。qualification_id
=Qualification
。id
)WHEREJobCategory
。job_id
= 1
为什么我的桌子job_categories没有加入?
答案 0 :(得分:2)
来自Cakephp Documentation
hasMany,belongsTo或hasOne关系中的外键 默认情况下被识别为相关表的(单数)名称 然后是_id。因此,如果贝克有很多蛋糕,那么蛋糕桌就会 通过baker_id外键引用面包师表。对于一个倍数 像category_types这样的措辞表,外键就是 category_type_id。
试试这个
var $hasMany = array(
'JobCategory' => array(
'className' => 'JobCategories',
'foreignKey' => 'job_id',
'dependent' => true,
)
);
答案 1 :(得分:0)
我认为问题出在$similar_conditions['JobCategory.job_id'] = 1;
。
你不能在你的工作模型中使用['JobCategory.job_id']。
试试这个
$similar_jobs = $this->Job->find('all',array(
'contain' => array(
'JobCategory' => array(
'conditions' => array(
$similar_conditions
)
)
)
)
);
并为AppModel添加可包含的行为