检查Laravel中是否存在唯一索引键

时间:2015-05-28 11:11:47

标签: php mysql laravel

Schema\Builder类有In [228]: cols = [df[col].squeeze() for col in df] pd.concat(cols, ignore_index=True) Out[228]: 0 1.474071 1 -1.071357 2 0.221471 3 -0.964980 4 -1.328865 5 0.228440 6 -1.197071 7 0.306996 8 -0.014805 9 1.588931 10 -0.014805 11 0.964980 12 -0.064034 13 0.441153 14 -0.744471 15 -0.845696 16 1.682706 17 0.901805 18 -1.066969 19 -0.028665 20 -0.284319 21 0.476720 22 -0.284319 23 -0.845696 24 0.781836 25 0.583787 26 1.729689 27 1.846883 28 0.888782 29 0.520260 30 -0.858447 31 1.574159 32 -1.461665 33 -0.242861 34 -1.461665 35 1.846883 36 -1.282782 37 2.353925 38 0.758527 39 -1.340896 40 -1.717693 41 1.171216 42 -0.303421 43 0.384316 44 0.650776 45 0.473424 46 0.650776 47 -1.340896 dtype: float64 hasTable()方法分别检查表和列是否存在。

是否有任何方法或方法来检查索引键(例如唯一键)是否存在?

3 个答案:

答案 0 :(得分:14)

虽然Laravel没有提供检查密钥是否存在的任何方法,但您可以使用任何of the available queries in MySQL,然后使用hasColumn()

例如:

DB::select()

只需将$keyExists = DB::select( DB::raw( 'SHOW KEYS FROM your_table_name WHERE Key_name=\'your_key_name\'' ) ); your_table_name替换为正确的值。

答案 1 :(得分:7)

如果您使用的是Laravel,那么很可能您可以访问像Eloquent这样的ORM。假设您正在使用Eloquent,您可能会做这样的事情:

try {
    Schema::table(
        'the_name_of_your_table',
        function (Blueprint $table) {
            $sm = Schema::getConnection()->getDoctrineSchemaManager();
            $indexesFound = $sm->listTableIndexes('the_name_of_your_table');

            $indexesToCheck = [
                'index_name_1',
                'index_name_2',
                'index_name_3',
                'index_name_4'
            ];

            foreach ($indexesToCheck as $currentIndex) {
                if (array_key_exists($currentIndex, $indexesFound)) {
                    // The current index exists in the table, do something here :)
                }
            }
        }
    );
} catch (Exception $e) {

}

答案 2 :(得分:0)

获取特定表的所有键详细信息

$keys = DB::select(DB::raw('SHOW KEYS from users'));

foreach($keys as $item)
{
   echo $item->Key_name;
}

如果您不知道唯一键名,但是知道名称,那么这里是示例代码。

$keys = DB::select(DB::raw('SHOW KEYS from users'));

foreach($keys as $item)
   {
       if($item->Column_name == 'email')
       {
           Schema::table('users', function (Blueprint $table) use($item) {
               $table->dropUnique($item->Key_name);
           });
        }
   }