2017-01-10 2 views
0

Есть две модели: Order и OrderDeliveryData. Они относятся кУсловия отбора проб из разных таблиц yii2

public function getOrderDeliveryData(){ 
    return $this->hasOne(OrderDeliveryData::className(), ['order_id' => 'order_id']); 
} 

Как можно сделать что-то подобное в модели поиска (теперь ошибка)?

$query = Order::find()->andWhere(['orderDeliveryData.order_delivery_data_courierId' => ("51")]) 
     ->andWhere(['order_status' => ("send")]); 
+0

Вы хотите выбрать заказы, которые имеют order_status отправить и 'orderDeliveryData.order_delivery_data_courierId' является 51 или вы хотите, чтобы выбрать все заказы, которые имеют' order_status' => 'send' и соответствующий' orderDeliveryData's, который имеет ' order_delivery_data_courierId = 51' –

ответ

1

Try:

$query = Order::find()->with(['orderDeliveryData' => function($query){ 
     $query->where([ 'order_delivery_data_courierId' => '51' ]); 
    }])->where(['order_status' => "send"]); 
1

Вы должны написать или присоединиться joinWith на OrderDeliveryData модель, чтобы иметь возможность использовать свои столбцы, где.

$query = Order::find() 
      ->joinWith(['orderDeliveryData']) 
      ->andWhere([OrderDeliveryData::tablename().'.order_delivery_data_courierId' => "51"]) 
    ->andWhere(['order_status' => ("send")]); 
Смежные вопросы