不等于在 cakephp 3 中不起作用
not equals isnt working in cakephp3
我无法使不等于条件起作用。发生的事情是它忽略了所有数据,因为 cancelled_by
字段已经 null
。如果 cancelled_by
字段是 null
那么这不等于不等于 Tutor
.
这个小错误让我损失了5天的错误数据。我犯错了吗?删除不等于条件后,所有数据都按预期检索。
下面两行是我用过的,但都没用。
'Lessons.cancelled_by not like' => '%Tutor%'
'Lessons.cancelled_by !=' => 'Tutor'
$searchDate = date('Y-m-d');
$query3 = $this->find()
->contain([
'Tutors', 'Subjects', 'Students', 'Students.Guardians', 'XeroInvoices'
])
->select([
'Lessons.id', 'Lessons.lesson_date', 'Lessons.start_time', 'Lessons.end_time',
'Tutors.id', 'Tutors.first_name', 'Guardians.id', 'Tutors.last_name',
'Lessons.timesheet_status', 'Students.id', 'Students.first_name',
'Students.last_name', 'Students.has_credit', 'XeroInvoices.invoice_number',
'Guardians.guardian_email', 'Guardians.guardian_mobile',
'Guardians.guardian_last_name', 'Guardians.guardian_first_name',
'Lessons.due_date', 'Lessons.cancelled_by', 'Subjects.name', 'Lessons.revenue',
'Lessons.discount', 'Lessons.surcharge', 'Lessons.future_makeup_lesson_id',
'Lessons.cancelled_pastlesson_id'
])
->where([
'Lessons.due_date' => $searchDate,
'Lessons.lesson_inactive' => false,
'Students.has_credit like' => '%postpaid%',
'Lessons.cancelled_by !=' => 'Tutor'
])
->order([
'Guardians.id',
'Lessons.lesson_date' => 'ASC',
'Lessons.start_time' => 'ASC'
])
->hydrate(false);
使用->notEq()
示例
$query = $articles->find()
->where(function ($exp) {
return $exp
->eq('author_id', 2)
->eq('published', true)
->notEq('spam', true)
->gt('view_count', 10);
});
在此处阅读更多内容Cakephp 3
这是此处发帖人的正确答案。如果那个人可以给出答案,here.Equality 运算符通常不会与 SQL 中的空值很好地交互。您可能应该根据需要添加 "OR" 条件 'cancelled_by IS' => NULL 或 IS NOT。
'Lessons.cancelled_by !=' => 'Tutor'
是正确的,但它不适用于空值。
'Lessons.cancelled_by IS NOT' => 'NULL'
将适用于 NULL 值。我认为你可以同时使用两者。所以结果只会是 (cancelled_by != 'Tutor' AND cancelled_by IS NOT NULL) 这是你需要的结果。
我无法使不等于条件起作用。发生的事情是它忽略了所有数据,因为 cancelled_by
字段已经 null
。如果 cancelled_by
字段是 null
那么这不等于不等于 Tutor
.
这个小错误让我损失了5天的错误数据。我犯错了吗?删除不等于条件后,所有数据都按预期检索。
下面两行是我用过的,但都没用。
'Lessons.cancelled_by not like' => '%Tutor%'
'Lessons.cancelled_by !=' => 'Tutor'
$searchDate = date('Y-m-d');
$query3 = $this->find()
->contain([
'Tutors', 'Subjects', 'Students', 'Students.Guardians', 'XeroInvoices'
])
->select([
'Lessons.id', 'Lessons.lesson_date', 'Lessons.start_time', 'Lessons.end_time',
'Tutors.id', 'Tutors.first_name', 'Guardians.id', 'Tutors.last_name',
'Lessons.timesheet_status', 'Students.id', 'Students.first_name',
'Students.last_name', 'Students.has_credit', 'XeroInvoices.invoice_number',
'Guardians.guardian_email', 'Guardians.guardian_mobile',
'Guardians.guardian_last_name', 'Guardians.guardian_first_name',
'Lessons.due_date', 'Lessons.cancelled_by', 'Subjects.name', 'Lessons.revenue',
'Lessons.discount', 'Lessons.surcharge', 'Lessons.future_makeup_lesson_id',
'Lessons.cancelled_pastlesson_id'
])
->where([
'Lessons.due_date' => $searchDate,
'Lessons.lesson_inactive' => false,
'Students.has_credit like' => '%postpaid%',
'Lessons.cancelled_by !=' => 'Tutor'
])
->order([
'Guardians.id',
'Lessons.lesson_date' => 'ASC',
'Lessons.start_time' => 'ASC'
])
->hydrate(false);
使用->notEq()
示例
$query = $articles->find()
->where(function ($exp) {
return $exp
->eq('author_id', 2)
->eq('published', true)
->notEq('spam', true)
->gt('view_count', 10);
});
在此处阅读更多内容Cakephp 3
这是此处发帖人的正确答案。如果那个人可以给出答案,here.Equality 运算符通常不会与 SQL 中的空值很好地交互。您可能应该根据需要添加 "OR" 条件 'cancelled_by IS' => NULL 或 IS NOT。
'Lessons.cancelled_by !=' => 'Tutor'
是正确的,但它不适用于空值。
'Lessons.cancelled_by IS NOT' => 'NULL'
将适用于 NULL 值。我认为你可以同时使用两者。所以结果只会是 (cancelled_by != 'Tutor' AND cancelled_by IS NOT NULL) 这是你需要的结果。