Как проверить на существование DB?

Вы можете использовать этот код

public function index()
{
    $products = Product::with('category')->get();

    return view('product' ,compact('products'));
}

В блейде

@foreach($products as $product)
    {{$product->name}}
    {{$product->category->name ?? ''}}
    //or
    @if ($product->category)
        $product->category->name
    @endif

@endforeach

Также, если в таблице проекта внешний ключ не равен category_id. В вашем случае

public function category()
{
    return $this->belongsTo('App\Category', 'category');
}
5
задан Mehrdad Afshari 17 May 2009 в 05:06
поделиться

5 ответов

Установите Начальный каталог = master в строке подключения и выполните:

select count(*) from sysdatabases where name = @name

с @name , установленным в имя базы данных.

Если вы хотите проверить строку подключения в целом (а не наличие независимой базы данных), попробуйте подключиться к ней в блоке try / catch .

17
ответ дан 18 December 2019 в 05:55
поделиться

Вы можете просто попробовать подключиться к нему. Если это вызывает исключение, значит, строка подключения каким-то образом неверна: либо база данных не существует, либо пароль неверен, либо что-то еще.

DbConnection db = new SqlConnection(connection_string);
try
{
    db.Open();
}
catch ( SqlException e )
{
    // Cannot connect to database
}
4
ответ дан 18 December 2019 в 05:55
поделиться

попробуйте

IF NOT EXISTS(SELECT * FROM sys.databases WHERE [name] = @name)
   CREATE DATABASE @name;
GO

или

IF db_id(@name) IS NOT NULL
   CREATE DATABASE @name;
GO

или SqlConnection.ChangeDatabase (String) . Я думаю, что при новой попытке подключения можно было бы использовать меньше ресурсов sql-сервера.

1
ответ дан 18 December 2019 в 05:55
поделиться

Чтобы охватить диапазон возможностей (сервер не существует, база данных не существует, нет входа в систему, нет разрешений, сервер не работает и т. д.) - самая простая идея - просто попытаться подключиться как обычно и выполнить что-то тривиальное - SELECT GETDATE ( ) например. Если вы получаете исключение, значит проблема!

Бывают случаи (особенно при работе с внепроцессными системами), когда try / catch является наиболее прагматичным вариантом.

3
ответ дан 18 December 2019 в 05:55
поделиться

Просто попробуйте DBConnection.Open (), заключенную в блок try, улавливающий DBException.

Примерно столь же элегантное решение, какое вы собираетесь найти.

1
ответ дан 18 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: