2017-06-14 25 views
0

以下は関連ですcakephp3- where句の未知の列

各学校には多くの学生がいます。 各学校はの4つの地区があるとしましょう地区

$this->table('school'); 

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

に属します。 (Districts.id = 1,2,3,4) 学校のモデルでは、すべての生徒のリストを取得しようとしています。 しかし、地区が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を渡す必要があります。

試してみてください。

district_id 

id