2015-12-23 19 views
7

Ich bin seit 12 Jahren PHP-Programmierer und habe das Rad viele Male neu erfunden, indem ich ein eigenes Framework für unsere Closed-Source-Web-App, die als gehostete Lösung angeboten wird, unter Verwendung der gleichen gemeinsamen Datenbank erstelle für alle Kunden.Laravel ohne Eloquent & Datenbankmigrationen?

Jetzt versuche ich Laravel 5 und bemerkte, dass fast jedes Beispiel Eloquenz und Datenbank Migrationen verwendet. Mir scheint, dass solche Dinge auf einfache Datenbanken und Leute abzielen, die SQL oder Datenbankdesign nicht mögen (aber ich könnte falsch liegen).

Unsere MySQL-Datenbank enthält mehr als 100 Tabellen, viele gespeicherte Prozeduren und viele Trigger, die ich mir in einem ORM nicht vorstellen kann. Wir verwenden Navicat für das Datenbankdesign und das Testen von SQL-Abfragen. Um die Datenbank auf eine neuere Version der App zu aktualisieren, haben wir bereits einige nette Skripte und sogar visuelle Tools geschrieben.

Also meine Frage ist, ob Laravel wirklich mit Eloquent und Migrationen verwendet werden soll oder dass ich wirklich eine Menge Funktionalität ohne sie verpasse.

Was empfehlen Sie?

+0

Sorry und Tia; das ist irrelevant, hast du codenignighter mit doctrine mit mysql db und extjs auf der ui versucht? das passt vielleicht besser. – unixmiah

+0

es liegt an Ihnen, wenn Sie nicht eloquent verwenden wollen, aber ich denke, Migrationen ist cool. – Ceeee

+0

Ich habe Codigniter nie ausprobiert, aber ich würde gerne Laravel benutzen, da es heutzutage am meisten benutzt scheint. Wir verwenden jetzt unser eigenes AJAX-Framework, planen jedoch die Verwendung von AngularJS oder EmberJS. – Dylan

Antwort

3

Seine bis zu Ihnen,

Laravel Migration ist für die Aufbewahrung Datenbankversion richtet (während Version Controller) auch der eloquente für einfache Beziehung Mapping zwischen Tabellen für komplexe Situationen wie mehrere richtet Join und alle nicht empfohlen, da Performance-Problem, dann können Sie Query Builder wählen es gibt viele bessere Leistung, Sie müssen in Laravel \DB::statement();

Die Laravel ist eine perfekte Ergänzung für Angular Js benutzen Sie unformatierte Abfrage schreiben, mehr Laravel ist nur ein Wrapper von paar netten PHP-Komponenten, die ist fähig für schnelle Ergebnisse.

hoffen, es hilft ..

1

ein ORM Verwendung vereinfacht Ihr Leben als am häufigsten ist das Szenario bereits abgedeckt. Das Holen von Daten, das Verwalten von Beziehungen und das Eager/Lazy-Laden sind ein Kinderspiel. Darüber hinaus schützt es Sie vor allen Sicherheitsanfälligkeiten, die beim Erstellen eigener fest codierter Abfragen auftreten können. Natürlich können nicht alle Szenarien von einem ORM behandelt werden, daher die Möglichkeit, RAW-Abfragen zu schreiben. Mit Laravel des Query Builder könnten Sie so etwas tun:

$results = DB::select(DB::raw("SELECT * FROM users WHERE username = :username"), ['username' => 'johndoe']);

Wenn Sie Dinge wie ALTER oder SET ‚ausgeführt werden soll s dann können Sie DB::Statement verwenden.

Also nur zu beachten, Eloquent ist Laravel ORM, während die Query Builder ist die Schicht für den Aufbau Ihrer Abfragen in einer sicheren Weise.

Also, ob oder nicht verwenden Eloquent an Ihnen ist, ich glaube, dass sie eine gute dort mit einem soliden ORM getan haben, aber du bist immer frei eine andere ORM wie Lehre, Data Mapper zu implementieren, etc. Es Laravel sind Bindungen für die meisten von denen.

Edit: Erwähnenswert ist auch, dass ein Eloquent Modell einige praktische Extras bietet, die auch Dinge vereinfacht, wie ein JSON konvertieren __toString, geschützten Attribute, Datum Gießen usw. Wenn mehrere Modelle holen werden sie in einem gespeichert werden Collection, eine Arrayable, die noch mehr Methoden für glückliche Zeiten bietet.Überprüfen Sie es heraus: http://laravel.com/docs/5.1/eloquent-collections

1

Sie können einfache SQL-Abfragen in Laravel ausführen, wenn Sie möchten, aber in der Tat die meisten Beispiele verwenden Eloquent.

Ich habe Projekt mit über 100 Tabellen gemacht und es ist in den meisten Fällen möglich, Eloquent zu verwenden, anstatt jedes Mal Raw SQL-Abfragen zu stellen, aber es ist eher meine Präferenz.

Sie haben jedoch erwähnt, dass Sie viele gespeicherte Prozeduren und Trigger in der Datenbank haben. Um ehrlich zu sein, sollten Sie das überdenken, weil Sie jetzt zu viel Geschäftslogik in die Datenbank einbringen und Ihre Logik sowohl in der Datenbank als auch in der Anwendung ist.

Ich habe vor ein paar Monaten eine solche Datenbank in MsSQL gesehen und es war schrecklich - niemand wusste wirklich, was passiert und wenn Sie diese Datenbank zu MySQL und Laravel-Anwendung migrieren wollten, war es ein großes Problem, weil zu viel Logik drin war Datenbank (Ich habe nicht an diesem Projekt teilgenommen hat nur einen Blick auf es)