【发布时间】:2016-01-04 08:15:17
【问题描述】:
在 actionDelete 中,我编写了从所有表中获取 fk 的查询并创建了 activeDataProvider。并编写了一个 foreach 循环以逐个获取元素。
$query = new \yii\db\Query;
$query->select('practiceCode')->from('member','plan','offer','appointment','product','incentive','clinic','complaint')
->where(['practiceCode' => $model->practiceCode])->all();
$query->createCommand();
$dataProvider= new ActiveDataProvider([
'query' => $query,
'pagination' => false,
]);
$models = $dataProvider->getModels();
if(count($models) >= 1) {
$memberModel = new Member();
foreach ($models as $k) {
$k['deleted'] = 'Y';
//$memberModel->save();
$connection->createCommand()->update('member', ['deleted' => 'Y'], ['practiceCode' => $models['practiceCode']])->execute();
现在可以了 对所有表逐一考虑
}
return $this->redirect(['index']);
我对如何在所有表中保存这个标志“Y”感到不安
【问题讨论】:
-
你想删除所有包含 practiceCode 作为外键的记录吗?对吗?
-
是的,我想删除所有包含 practiceCode as fk 的记录
-
所以我想你想使用关系来删除它。目前你遇到了什么错误?
-
我如何使用关系?你能解释一下
-
即:$oModel = ModelName::find()->with('originaltable_name')->where(['practiceCode' => $your_value])->all();您将选择您的记录并删除。您将使用 with() 定义您的关系
标签: php yii2 dataprovider