usar not instrucciones guion expresion cualquier comodin como caracter bajo sql-server cakephp cakephp-3.0 query-builder cakephp-bake

sql server - not - ¿Cómo usar de forma segura los nombres SQL reservados?



like sql php (3)

Como ya lo mencionó Vishal Gajjar en los comentarios, está utilizando la palabra clave reservada desc para el nombre de su columna, de ahí el error, no es culpa suya, es suya.

Para poder usar esas palabras reservadas, el nombre de la columna debe ser citado correctamente, sin embargo, CakePHP 3 ya no se cita automáticamente por defecto, ya que es una operación costosa.

Si insiste en usar palabras reservadas, habilite la cita del identificador a través de la opción quoteIdentifiers en su configuración app.php , o habilítela manualmente usando el autoQuoting() ( enableAutoQuoting() partir de CakePHP 3.4) del controlador DB.

Ver también

Estoy usando Cakephp 3 usando sqlserver como servidor de origen de datos. Estoy seguro de que no hay ningún problema con la conexión de mi base de datos ... como home.ctp me indica que estoy conectado a mi base de datos ... y también estoy usando el complemento de migraciones para crear mis tablas ... parece que no hay ningún problema al trabajar con Estas herramientas. pero después de hornear mi MVC, solo recibí una página llena de errores.

por ejemplo $ bin / cake hornear todas las pruebas

no encontré ningún error y MVC está en su carpeta específica, testController.php, testTable, etc.

y en los navegadores localhost: 8765 / tests

pero todo lo que tengo es una página de diferentes errores. Estoy viendo

Error: SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near the keyword ''desc''.

SELECT * FROM (SELECT Tests.id AS [Tests__id], Tests.desc AS [Tests__desc], (ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) AS [_cake_page_rownum_] FROM tests Tests) _cake_paging_ WHERE _cake_paging_._cake_page_rownum_ <= :c0

y más errores en el lado izquierdo.

Supongo que esto se debe a que los controladores con consultas incorrectas o consultas generadas por bake son solo para mysql. Solo quiero saber cómo lidiar con esto. ¿hay una configuración que olvidé hacer? por favor aconséjame. Soy nuevo en Cakephp, y el inglés no es mi lengua materna, lo siento si no puedo explicar mi pregunta correctamente. gracias por adelantado.


Puede usar este código antes de una consulta problemática:

$this->Tests->connection()->driver()->autoQuoting(true);

y cuando haya terminado, puede desactivar el presupuesto automático:

$this->Tests->connection()->driver()->autoQuoting(false);

Por lo tanto, el mal rendimiento sería solo en consultas problemáticas.


Utilizar este :

SELECT * FROM (SELECT Tests.id AS [Tests__id], Tests.[desc] AS [Tests__desc], (ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) AS [_cake_page_rownum_] FROM tests Tests) _cake_paging_ WHERE _cake_paging_._cake_page_rownum_ <= :c0

Si usa una palabra clave, úsela entre corchetes [ ]