基于 if 条件 yii2 连接查询时输出不正确
incorrect output while concatenating query based on if condition yii2
我有如下查询
$query= (new Query())->select(['title'])
->from('projects')
->join('LEFT JOIN', 'user AS u', 'p.user_ref_id=u.user_id')
->where('p.created_date >= STR_TO_DATE('.'"'.$fmonth.'"'.', "%d-%b-%Y")')
->andWhere('p.created_date <= DATE_ADD(STR_TO_DATE('.'"'.$tmonth.'"'.', "%d-%b-%Y"), INTERVAL 1 DAY)')->all();
如果我打印变量 $query,我将低于输出
Array ( [0] => Array ( [title] => test project 1))
但是如果我写下面的代码
$query= (new Query())->select(['title'])
->from('projects AS p')
->join('LEFT JOIN', 'user AS u', 'p.user_ref_id=u.user_id')
->where('p.created_date >= STR_TO_DATE('.'"'.$fmonth.'"'.', "%d-%b-%Y")')
->andWhere('p.created_date <= DATE_ADD(STR_TO_DATE('.'"'.$tmonth.'"'.', "%d-%b-%Y"), INTERVAL 1 DAY)');
if(!empty($status)){
$query->andWhere(['p.project_status' => 1]);
}
$query->all();
当我为上面的代码打印 $query 时。我得到的输出是
yii\db\Query Object ( [select] => Array ( [0] => p.title [1]) [selectOption] => [distinct] => [from] => Array ( [0] => projects AS p ) [join] => Array ( [0] => Array ( [0] => LEFT JOIN [1] => user AS u [2] => p.user_ref_id=u.user_id) )....
当我尝试拆分查询并连接时,为什么会得到这种 object/array 格式。是否有任何其他方法可以执行与
类似的格式
Array ( [0] => Array ( [title] => test project 1))
如果我理解正确,在第一种情况下你正在打印 all()
方法的结果,而在第二种情况下你正在打印 Query
对象,因为没有调用 all()
打印的变量而不是对象本身,因此结果丢失。
如果你在第二种情况下打印 $query->all()
你会得到你想要的。
我有如下查询
$query= (new Query())->select(['title'])
->from('projects')
->join('LEFT JOIN', 'user AS u', 'p.user_ref_id=u.user_id')
->where('p.created_date >= STR_TO_DATE('.'"'.$fmonth.'"'.', "%d-%b-%Y")')
->andWhere('p.created_date <= DATE_ADD(STR_TO_DATE('.'"'.$tmonth.'"'.', "%d-%b-%Y"), INTERVAL 1 DAY)')->all();
如果我打印变量 $query,我将低于输出
Array ( [0] => Array ( [title] => test project 1))
但是如果我写下面的代码
$query= (new Query())->select(['title'])
->from('projects AS p')
->join('LEFT JOIN', 'user AS u', 'p.user_ref_id=u.user_id')
->where('p.created_date >= STR_TO_DATE('.'"'.$fmonth.'"'.', "%d-%b-%Y")')
->andWhere('p.created_date <= DATE_ADD(STR_TO_DATE('.'"'.$tmonth.'"'.', "%d-%b-%Y"), INTERVAL 1 DAY)');
if(!empty($status)){
$query->andWhere(['p.project_status' => 1]);
}
$query->all();
当我为上面的代码打印 $query 时。我得到的输出是
yii\db\Query Object ( [select] => Array ( [0] => p.title [1]) [selectOption] => [distinct] => [from] => Array ( [0] => projects AS p ) [join] => Array ( [0] => Array ( [0] => LEFT JOIN [1] => user AS u [2] => p.user_ref_id=u.user_id) )....
当我尝试拆分查询并连接时,为什么会得到这种 object/array 格式。是否有任何其他方法可以执行与
类似的格式 Array ( [0] => Array ( [title] => test project 1))
如果我理解正确,在第一种情况下你正在打印 all()
方法的结果,而在第二种情况下你正在打印 Query
对象,因为没有调用 all()
打印的变量而不是对象本身,因此结果丢失。
如果你在第二种情况下打印 $query->all()
你会得到你想要的。