我如何生成粗略的主键,因为我的dabatase,此表没有主键。只有FK。 当我尝试生成它时会像这样 image。
谢谢您的帮助。
答案 0 :(得分:0)
我认为,在没有PK的情况下使用CRUD并不是很好。但是,如果没有其他选项,则可以将伪造的PK变量临时添加到表中,并在生成后将其删除。您应该更改一些代码来避免生成的文件(控制器和视图)上的错误,以删除对该假变量的引用。而且您应该格外小心,因为您可以更新或删除一些其他记录,而不需要一个记录
更新
假设数据库结构是这样的one,并且您应该为表“ othertable ”生成CRUD,则可以:
将这些行添加到“ 其他表”:
//imitate id public $id; //rediclare init public function init() { parent::init(); $this->id= $this->sometable_id; } // Rediclare primary key. For this condition sometable_id // have chosen as primary // key. We can change it public static function primaryKey() { return ['sometable_id']; }
从 OthertableSearch 模型
将 OthertableController 上的findModel($ id)方法更改为:
protected function findModel($id) { if (($model = Othertable::find()->where(['sometable_id'=>$id])->one()) !== null) { $model->id=$model->sometable_id; return $model; } throw new NotFoundHttpException('The requested page does not exist.'); }
注意事项
在此示例中,我使用了“ othertable ”的sometable_id,假设表上只有一个记录带有此sometable_id值(ag唯一),否则每次获取第一条记录并进行更改/删除,而需要一个。可以将其更改为表的其他唯一变量。如果要使用其他变量,则应更改控制器的模型和findModel()方法。