2017-06-14 116 views
0

以下是协会cakephp3-未知列在哪里条款

每个学校都有很多学生。 每所学校属于一个区

$this->table('school'); 

$this->belongsTo('Districts', [ 
    'foreignKey' => 'district_id' 
]); 
$this->hasMany('Students', [ 
    'foreignKey' => 'school_id' 
]); 

比方说,有4个区。 (Districts.id = 1,2,3,4) 在School's Model中,我试图获取所有学生的列表。 但是,如果地区是1或2,我只想显示那些得分超过50分的学生。 而对于其他地区,我试图给那些得分低于35分的学生展示。 这是我为上述提到的查找函数。

public function findStudentsList(Query $query, array $options) 
{ 
    $query->select(['id','name','modified','created']) 
    ->contain([ 
     'Districts'=> function ($query) { 
      return $query->select(['id','name']); 
     }, 
     'Students' => function ($query) { 
      return $query->where([ 
       'CASE 
       WHEN Districts.id=1 THEN Students.marks >50 
       WHEN Districts.id=2 THEN Students.marks >50 
       ELSE Students.marks < 35 
       END']); 
     }  
    ]); 
} 

但是,当我执行这个,我得到以下错误。

Column not found: Unknown column 'Districts.id' in where clause 

这是正确的方法吗?我是CakePHP3的新手。

回答

1

您应该传递有效的ID。

尝试:

id 

district_id