2016-11-12 19 views
0

下面的代碼並不像我預期的那樣工作。我希望所有科學名稱除了「科學評估」之外的名稱。我如何排除諸如「科學評估」之類的名稱,並將其他行與科學名稱保持一致。我那裏有「科學」無法在cakephp3中排除任何行

$subjectScience = $this->Students->Subjects->find('list') 
    ->select(['id', 'name']) 
    ->where(['Subjects.name not LIKE' => '%assessment%']) 
    ->andWhere(['Subjects.name LIKE' => '%physics%']) 
    ->orWhere(['Subjects.name LIKE' => '%chemistry%']) 
    ->orWhere(['Subjects.name LIKE' => '%biology%']) 
    ->orWhere(['Subjects.name LIKE' => '%science%','Subjects.name not LIKE' => '%assessment%']) //doesnt work as i expect  
    ->order(['Subjects.name' => 'asc']); 

回答

0

的名字沒有主題名稱。如果你到底想要的特定字符串只有那麼爲什麼不使用分配operator.So嘗試使用:

'Subjects.name' => 'science' 

,而不是:

'Subjects.name LIKE' => '%science%' 
+0

不,這不是我想要的。主題名稱可以包含「科學」,但主題名稱只是字符串;「科學」。我不能排除查詢中包含單詞'科學'和'評估' – jagguy

+0

,但你的查詢已經好像你想要..可以發佈$ subjectScience的調試值的行嗎? –

+0

我有一個叫'科學評估'的科目,我不想要,但我有4個科學名稱的其他科目,我想返回。我認爲這個問題已經足夠清楚了。 – jagguy