我需要在JOIN语句中定义更多条件。如何在Yii2中使用hasMany关系实现这一点?:
..。左连接命令ON (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;
}
...
有可能吗?
发布于 2014-09-05 12:07:25
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);
https://stackoverflow.com/questions/25596576
复制相似问题