Realmente depende de su definición de "grande". ¿Te refieres a grandes conjuntos de datos? ¿Un modelo de dominio muy complejo?¿O solo muchos controladores/acciones diferentes?
Escribir/Leer datos.
Cualquier cosa que pueda hacer con SQL simple puede hacerlo en CakePHP. Puede que no siempre sea muy agradable hacerlo, pero en el peor de los casos no es peor que SQL directo.
Pero realmente no debería estar pensando en consultas. Deberías pensar en tu modelo de dominio. CakePHP implementa el patrón de registro activo. Funciona muy bien si su modelo de dominio se adapta muy bien a un patrón de registro activo. Pero si no lo hace, entonces no recomendaría CakePHP. Si su modelo de dominio no se asigna a Active Record, pasará mucho tiempo luchando contra la forma Cake de hacer las cosas. Y eso no es divertido. Sería mucho mejor con un marco que implemente un patrón de Data Mapper (por ejemplo, Zend).
Andamio
andamiaje es temporal. Maneja claves externas (si las defines en el modelo y en la base de datos) pero eso es todo. No puedes modificar el andamio. ¡Pero, puedes hornearlos!
Cuando hornea un controlador o ve, básicamente está escribiendo el andamio en un archivo como punto de partida para su propia implementación. Después de hornear, puedes hacer lo que quieras. La desventaja de la cocción es que ya no se actualiza cuando cambian los modelos o la base de datos. Entonces, si hornea un controlador y vistas y agrega campos a su modelo, entonces necesita agregar esos campos manualmente a su controlador y ver el código.
velocidad de desarrollo
En mi caso, yo soy mucho más rápido el desarrollo de un sitio web en CakePHP a continuación en el código de formato. ¡Pero solo si Active Record se adapta a la aplicación! Ver mi primer punto. Incluso entonces, Cake es probablemente aún más rápido, pero sería aún más rápido con un mejor marco de adaptación.
Algunos otros pensamientos
grandes conjuntos de datos
Si tiene datos muy grandes y grandes resultados de la consulta a continuación, la torta puede ser un problema. Una operación find() desea devolver una matriz asociativa, por lo que todas las filas se leen, analizan y convierten en matrices. Si su conjunto de resultados es demasiado grande, se quedará sin memoria. CakePHP no implementa objetos ResultSet como muchas otras implementaciones de Active Record y eso es un inconveniente definitivo. Usted termina paginando manualmente a través de sus propios datos con subconsultas. Yuck. Wich me lleva al siguiente punto:
matrices
Aprende a amar porque CakePHP lo hace. Todo es una matriz y, a menudo, son grandes, complejos y profundos. Se pone realmente molesto después de un tiempo. No puede agregar funciones a las matrices por lo que su código es más complicado que si CakePHP hubiera utilizado instancias de objetos anidados. Las funciones que puede agregar a esos objetos pueden ayudar a mantener su código limpio.
rarezas e inconsistencias
CakePHP tiene algunas cosas malolientes desagradables reales ocultos en lo profundo de.Si Active Record se adapta a tu aplicación, probablemente nunca te topes con ellas, pero si tratas de moldear CakePHP en algo más complejo, entonces tendrás que luchar contra esto. Algunos ejemplos:
- HABTM a través de un modelo personalizado utiliza la definición del otro lado de la relación en la que está trabajando.
- Algunos lugares realmente extraños donde no se invocan sus disparadores de antes/después (por ejemplo, no de una actualización)
- comportamiento impar de Modelo-> campo(). Siempre consulta desde la base de datos. Por lo tanto, tenga cuidado al actualizar los datos del modelo sin guardarlos de inmediato en la base de datos. Algunas funciones de CakePHP obtienen datos de Model -> $ _ data y algunos usan Model -> field(). El resultado puede ser completamente diferente, lo que resulta en algunos errores muy difíciles de rastrear.
En resumen
, lo recomiendo CakePHP incluso para los sitios de "grandes", siempre y cuando su modelo de dominio encaja muy bien en la parte superior de Active Record. Si no, elige un marco diferente.
Disculpa, mezclé CakePHP con Code Igniter. He usado CakePHP poco antes de dejarlo, ya que parecía demasiado restrictivo y automático. –