Insane Skull
Insane Skull

Reputation: 9368

How to pass two different queries data in ArrayHelper Yii2?

I don't know how to do it but anyway i want to pass this two queries in same arrayhelper for my filter.

public function getName(){

Query:

1

$s_data = (new \yii\db\Query())
->select(["CONCAT(stu_first_name,' ',stu_last_name) as value","us.user_id as id"])
->from('stu_info si')
->join('join','stu_master sm','si.stu_info_id = stu_master_stu_info_id')
->join('join','users us','sm.stu_master_user_id = user_id')
->join('join','lib_borrow_transaction lbt','us.user_id = lbt_holder_id')
->where('us.is_block = 0')
->andWhere('lbt.lbt_holder_type = "S"') 
->andWhere('lbt.is_status = 0')
->andWhere('lbt.lbt_holder_id = us.user_id')
->all();

2

e_data = (new \yii\db\Query())
->select(["CONCAT(emp_first_name,' ',emp_last_name) as value","us.user_id as id"])
->from('emp_info ei')
->join('join','emp_master em','ei.emp_info_id = emp_master_emp_info_id')
->join('join','users us','em.emp_master_user_id = user_id')
->join('join','lib_borrow_transaction lbt','us.user_id = lbt_holder_id')
->where('us.is_block = 0')
->andWhere('lbt.is_status = 0')
->andWhere('lbt.lbt_holder_type = "E"')
->andWhere('lbt.lbt_holder_id = us.user_id')
->all();

And the Helper:

$data = ArrayHelper::map($e_data, 'id', 'value');
return $data;
}

How can i pass both queries data at same time in ArrayHelper or Some way to combine both queries?

Upvotes: 0

Views: 2257

Answers (2)

Insane Skull
Insane Skull

Reputation: 9368

I found the silly solution that worked, Just used array_merge() .

$all = array_merge($s_data, $e_data);
$data = ArrayHelper::map($all, 'id', 'value');
return $data;

Upvotes: 0

ScaisEdge
ScaisEdge

Reputation: 133380

try with union

public function getName(){

    $s_data = (new \yii\db\Query())
    ->select(["CONCAT(stu_first_name,' ',stu_last_name) as value","us.user_id as id"])
    ->from('stu_info si')
    ->join('join','stu_master sm','si.stu_info_id = stu_master_stu_info_id')
    ->join('join','users us','sm.stu_master_user_id = user_id')
    ->join('join','lib_borrow_transaction lbt','us.user_id = lbt_holder_id')
    ->where('us.is_block = 0')
    ->andWhere('lbt.lbt_holder_type = "S"') 
    ->andWhere('lbt.is_status = 0')
    ->andWhere('lbt.lbt_holder_id = us.user_id')
    ->all();

    $e_data = (new \yii\db\Query())
    ->select(["CONCAT(emp_first_name,' ',emp_last_name) as value","us.user_id as id"])
    ->from('emp_info ei')
    ->join('join','emp_master em','ei.emp_info_id = emp_master_emp_info_id')
    ->join('join','users us','em.emp_master_user_id = user_id')
    ->join('join','lib_borrow_transaction lbt','us.user_id = lbt_holder_id')
    ->where('us.is_block = 0')
    ->andWhere('lbt.is_status = 0')
    ->andWhere('lbt.lbt_holder_type = "E"')
    ->andWhere('lbt.lbt_holder_id = us.user_id')
    ->all();


     $e_data->union($s_data);    // Union of the query

     $data = ArrayHelper::map($e_data, 'id', 'value');
     return $data;

}

Upvotes: 0

Related Questions