Yii2 hasMany с много условия в израза за присъединяване

Трябва да дефинирам повече условия в оператора JOIN. Как мога да направя това в Yii2 с релация hasMany?:

... LEFT JOIN поръчки ВКЛЮЧЕНИ (customer.id = order.customer_id И orders.position = 1) ...

Имам DataProvider за GridView. Изглежда така:

...
public function search($params)
{
    $query = Customer::find()
        ->joinWith('orders');

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);
    return $dataProvider;
}
...

Модел:

...
public function getFirstOrder()
{
    $query = $this->hasMany(Orders::className(), ['customer_id' => 'id']);
    return $query;
}
...

Възможно ли е изобщо?


person Joe Johnson    schedule 31.08.2014    source източник
comment
можете да напишете mysql заявка в командата create   -  person Kshitiz    schedule 18.09.2014
comment
Почти съм сигурен в този момент, че няма начин поради бъг в Yii2.   -  person Joe Meyer    schedule 08.01.2015


Отговори (1)


public function search($params){


    $activeDataProvider = new ActiveDataProvider([
                                        "query" => Customer::find()
                                                   ->joinWith('orders')
                              ]);

    // Valdate the search $params.

    // Build your query depending on search params. I am assuming we get key => value pair in params

     foreach($params as $key => $value){

      $activeDataProvider->query->andWhere("`$key`  = '$value'");           

     }

     return $activeDataProvider;

}

Надявам се това да ви помогне :)

Можете също да визуализирате генерирания sql, като използвате:

    $command = $activeDataProvider->query->createCommand();
    print_r ($command->sql);
person Rx Seven    schedule 05.09.2014