检查 Laravel 中是否存在唯一的索引键
Schema\Builder 类具有 and 方法,分别用于检查表和列是否存在。hasTable()
hasColumn()
是否有任何方法或途径来检查索引键(如唯一键)是否存在?
Schema\Builder 类具有 and 方法,分别用于检查表和列是否存在。hasTable()
hasColumn()
是否有任何方法或途径来检查索引键(如唯一键)是否存在?
虽然Laravel没有提供任何方法来检查密钥的存在,但你可以使用MySQL中的任何可用查询,然后使用。DB::select()
例如:
$keyExists = DB::select(
DB::raw(
'SHOW KEYS
FROM your_table_name
WHERE Key_name=\'your_key_name\''
)
);
只需替换 和 正确的值。your_table_name
your_key_name
如果您使用的是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) {
}