Вот мое соединение с базой данных из config/database.php :
Код: Выделить всё
'external_db' => [
'driver' => 'sqlsrv',
'host' => env('DB_EXTERNAL_HOST', '127.0.0.1'),
'port' => env('DB_EXTERNAL_PORT', '1433'),
'database' => env('DB_EXTERNAL_DATABASE', 'forge'),
'username' => env('DB_EXTERNAL_USERNAME', 'forge'),
'password' => env('DB_EXTERNAL_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
'prefix' => '',
'strict' => true,
],
< /code>
Вот пример модели < /p>
class CRMProject extends Model
{
protected $connection = 'external_db';
protected $table = 'deviproj_projectBase';
public $timestamps = false;
protected $primaryKey = 'psa_projectId';
public $incrementing = false;
protected $fillable = ['psa_number', 'psa_name', 'CreatedOn'];
}
Когда я регистрирую все столбцы, используя Schema :: getColumnListing () , он возвращает пустую массив:
\Log::info("Available columns " . get_class($query->getModel()), Schema::getColumnListing($query->getModel()->getTable()));
< /code>
Кроме того, когда я проверяю конкретное поле: < /p>
Код: Выделить всё
$field = 'statecode';
\Log::info([
'model' => get_class($model),
'table' => $model->getTable(),
'hasColumn' => Schema::hasColumn($model->getTable(), $field),
]);
< /code>
Я получаю: < /p>
hasColumn => false
< /code>
Но поле определенно существует в таблице SQL Server. Я могу подтвердить это через: < /p>
[list]
[*] Студия управления сервером SQL < /li>
Прямой DB запрос DB в Laravel (Model::select('statecode')->first()[/list]
Почему Schema :: hascolumn () False для действительных столбцов SQL Server в Laravel? Схемы SQL на основе CRM? < /P>
Любая помощь или лучшие практики будут оценены. Я хочу избегать имен поля жестко, но в настоящее время я вынужден обойти это.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/795 ... -laravel-a
Мобильная версия