我一直在使用并且仍在学习查询expr()。我有一个复杂的查询,我不能使用,如果首先检查参数是否为'' - 空字符串。 我必须使用类似的东西在内部和X中使用嵌套的orX进行检查:
->andWhere($expr->orX($expr->eq(':sid', ''), $expr->neq('s.id', ':sid')))
注意:我知道这行可以通过首先使用if来完成,我只是用它作为一个例子,我得到错误说:
Error: Expected Literal, got ' OR '
我真的需要比较expr()里面的空字符串,怎么做?
答案 0 :(得分:6)
因为<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<Chronometer
android:id="@+id/chronometer1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="74dp"
android:fontFamily="sans-serif-light"
android:format="00:00:00"
android:textSize="48sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/contraction_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Time since last start timer:" />
<Chronometer
android:id="@+id/chronometer2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:format="00:00:00"
android:textSize="12sp" />
</LinearLayout>
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:textOff="Start Timer"
android:textOn="Stop Timer"
/>
</LinearLayout>
不是空字符串。它什么都没有,所以它在DQL / SQL中的评估结果为零。通常,学说需要一个命名参数。要么创建一个以获取引用的空字符串,要么提供自己引用的空字符串。
命名参数:
''
自己引用:
$qb->expr->eq('foo', ':foo');
$qb->expr->setParameter('foo', '');