protected function getTablePrimaryKey($table)
{
switch ($this->databaseEngine) {
case 'mysql':
$primaryKeyResult = \DB::select("SELECT COLUMN_NAME\n FROM information_schema.COLUMNS \n WHERE TABLE_SCHEMA = '" . env("DB_DATABASE") . "' AND \n TABLE_NAME = '{$table}' AND \n COLUMN_KEY = 'PRI'");
break;
case 'sqlsrv':
case 'dblib':
$primaryKeyResult = \DB::select("SELECT ku.COLUMN_NAME\n FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tc\n INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS ku\n ON tc.CONSTRAINT_TYPE = 'PRIMARY KEY' \n AND tc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME\n WHERE ku.TABLE_CATALOG ='" . env("DB_DATABASE") . "' AND ku.TABLE_NAME='{$table}';");
break;
case 'pgsql':
$primaryKeyResult = \DB::select("SELECT ku.COLUMN_NAME AS \"COLUMN_NAME\"\n FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tc\n INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS ku\n ON tc.CONSTRAINT_TYPE = 'PRIMARY KEY' \n AND tc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME\n WHERE ku.TABLE_CATALOG ='" . env("DB_DATABASE") . "' AND ku.TABLE_NAME='{$table}';");
break;
}
if (count($primaryKeyResult) == 1) {
return $primaryKeyResult[0]->COLUMN_NAME;
}
return null;
}