Schema :: hascolumn () возвращает false для существующих столбцов таблицы SQL с использованием Laravel и внешнего соединPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Schema :: hascolumn () возвращает false для существующих столбцов таблицы SQL с использованием Laravel и внешнего соедин

Сообщение Anonymous »

Я работаю над проектом Laravel 12, который подключается к базе данных Microsoft Dynamics CRM SQL Server через пользовательское подключение. Я столкнулся с загадочной проблемой: Schema Laravel's Schema :: hascolumn () возвращает false для столбцов, которые определенно существуют в базе данных. Функция, которую я работаю, является динамическим фильтром, поэтому я должен быть в состоянии отправлять поле, оператор и значение в запросе, чтобы иметь возможность фильтровать результаты. PrettyPrint-Override ">'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'];
}
< /code>
🧪 Код отладки < /h3>
Когда я регистрирую все столбцы, используя Schema :: getColumnListing (), он возвращает пустой массив: < /p>
\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>

Studio Management Studio < /li>
Прямой DB запрос в Laravel (Model :: SELECT ('stateCode')-> First () работает) < /li>
< /ul>
❓ Вопрос < /h3>


Подробнее здесь: https://stackoverflow.com/questions/795 ... -laravel-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»