Yii2 如何在Yii 2积垢生成器模板中获取主键
我使用gii代码生成器,我想输入主键Yii2 如何在Yii 2积垢生成器模板中获取主键,yii2,Yii2,我使用gii代码生成器,我想输入主键 C:\wamp\www\yii2\vendor\yiisoft\yii2-gii\generators\model/default/views/index.php 我使用这个代码 $count = 0; if (($tableSchema = $generator->getTableSchema()) === false) { foreach ($generator->getColumnNames() as $name) {
C:\wamp\www\yii2\vendor\yiisoft\yii2-gii\generators\model/default/views/index.php
我使用这个代码
$count = 0;
if (($tableSchema = $generator->getTableSchema()) === false) {
foreach ($generator->getColumnNames() as $name) {
if (++$count < 6) {
echo " '" . $name . "',\n";
} else {
echo " // '" . $name . "',\n";
}
}
} else {
foreach ($tableSchema->columns as $column) {
$format = $generator->generateColumnFormat($column);
if (++$count < 6) {
echo " '" . $column->name . ($format === 'text' ? "" : ":" . $format) . "',\n";
} else {
echo " // '" . $column->name . ($format === 'text' ? "" : ":" . $format) . "',\n";
}
}
}
$count=0;
if($tableSchema=$generator->getTableSchema())==false){
foreach($generator->getColumnNames()作为$name){
如果(++$count<6){
回显“'”$name.“,\n”;
}否则{
echo“/”“$name.”,\n“;
}
}
}否则{
foreach($tableSchema->columns as$column){
$format=$generator->generateColumnFormat($column);
如果(++$count<6){
回显“'”$column->name.($format==='text'?”“:“:”:“$format)。“,\n”;
}否则{
echo“/”$column->name.($format==='text'?“”:“:”:“$format)。“,\n”;
}
}
}
我想在下载代码之前先得到primaryKey
$generator->getTableSchema()->primaryKey()
但不起作用。我从中找到一个函数 C:\wamp\www\yii2\vendor\yiisoft\yii2 gii\generators\crud\Generator.php 函数为getNameAttribute() 我在文件中成功调用了以下代码: C:\wamp\www\yii2\vendor\yiisoft\yii2 gii\generators\model/default/views/index.php 比如
<?= $generator->getNameAttribute(); ?>//id
//id
或者很快
<?= $nameAttribute; ?>
该函数不会返回您想要的内容。它将返回name属性,该属性可能是主键,也可能不是主键。如果在数据库中添加一个名为“name”的列,则将返回该列的名称,而不是主键 此外,该函数的目的是返回1列的名称。这1列可能不是完整的主键,它可能是主键的一部分,如果您的主键又由多个列组成,那么该函数将使您失败 正确的方法是
$class = $this->modelClass;
$pk = $class::primaryKey();
$pk是一个数组
您的答案可能会解决您的问题(我在代码中也使用了类似的东西),但它并不能真正回答您的问题(如何获取主键)
不是一个方法,而是一个属性,然后将是:
$generator->getTableSchema()->primaryKey;
这将返回一个数组,要获取列名,必须访问数组的第一个元素,如
$generator->getTableSchema()->primaryKey[0];
另一方面,您可以:
foreach ($generator->getTableSchema()->columns as $column) {
if ($column->isPrimaryKey) {
// your code
}
$generator->getTableSchema()->primaryKey[0];
foreach ($generator->getTableSchema()->columns as $column) {
if ($column->isPrimaryKey) {
// your code
}