2015-12-23 26 views
7

Jestem programistą PHP od 12 lat i prawie wielokrotnie wymyślałem to koło, budując własne środowisko dla naszej zamkniętej aplikacji internetowej, która jest oferowana jako hostowane rozwiązanie, z wykorzystaniem tej samej współużytkowanej bazy danych dla wszystkich klientów.Laravel bez migracji Eloquent i bazy danych?

Teraz próbuję Laravel 5 i zauważyłem, że prawie każdy przykład wykorzystuje migracje wymowne i bazy danych. Wydaje mi się, że takie rzeczy są skierowane na proste bazy danych i ludzi, którzy nie lubią SQL lub projektowania baz danych (ale mogę się mylić).

Nasza baza danych MySQL zawiera ponad 100 tabel, wiele zapisanych procedur i wiele wyzwalaczy, których po prostu nie mogę sobie wyobrazić w ORM. Używamy Navicat do projektowania baz danych i testowania zapytań SQL. Aby zaktualizować bazę danych do nowszej wersji aplikacji, napisaliśmy już kilka ładnych skryptów, a nawet narzędzi wizualnych.

Moje pytanie brzmi, czy Laravel jest rzeczywiście przeznaczony do użycia z Eloquent i migracjami, czy też naprawdę brakuje mi wielu funkcji bez nich.

Co polecasz?

+0

Przepraszam i tia; to jest nieistotne, czy wypróbowałeś codeignighter z doktryną z mysql db i extjs na interfejsie użytkownika? to może być lepsze dopasowanie. – unixmiah

+0

to zależy od ciebie, jeśli nie chcesz używać wymowy, ale myślę, że migracja jest fajna. – Ceeee

+0

Nigdy nie próbowałem Codeigniter, ale naprawdę chciałbym użyć Laravel, ponieważ wygląda na to, że obecnie jest najbardziej wykorzystywaną strukturą. Korzystamy teraz z naszej własnej platformy AJAX, ale planujemy rozpocząć korzystanie z AngularJS lub EmberJS. – Dylan

Odpowiedz

3

Jego zapisu do ciebie,

laravel migracja jest skierowany do utrzymywania wersji bazy danych (przy użyciu kontrolera wersji) również wymowny jest skierowany do prostego mapowania relacji między tabelami dla skomplikowanych sytuacjach jak wielokrotności Dołącz i wszystko jej nie zalecane ze względu na problem z wydajnością wtedy można wybrać Query Builder daje znacznie lepsze wyniki, trzeba napisać zwykły kwerendy w laravel używać \DB::statement();

laravel jest idealne dopasowanie do Kątowymi JS więcej laravel jest tylko owinięcie z kilku przyjemnych elementów PHP, który jest zdolne zapewnić szybkie wyniki.

nadzieję, że to pomaga ..

1

Użycie ORM upraszcza życie jako najczęstszą scenariusze są już pokryte. Pobieranie danych, zarządzanie relacjami i szybkie/leniwe ładowanie są proste. Chroni również przed wszelkimi lukami zastrzyku, które możesz utworzyć podczas pisania własnych zakodowanych zapytań. Oczywiście nie wszystkie scenariusze mogą być obsługiwane przez ORM, stąd możliwość pisania zapytań RAW. Korzystanie laravel na Query Builder mógłby zrobić coś takiego:

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

Jeśli chcesz wykonać rzeczy jak ALTER lub SET „s Następnie można użyć DB::Statement.

Należy zauważyć, że Eloquent to ORM firmy Laravel, natomiast Query Builder to warstwa służąca do bezpiecznego budowania zapytań.

Niezależnie od tego, czy używasz Eloquent, czy nie, uważam, że dobrze sobie z tym poradzili z porządnym ORMem, ale zawsze możesz zaimplementować inne ORM, takie jak Doctrine, Data Mapper itp. Istnieje Laravel wiązania dla większości z nich.

Edit: Warto wspomnieć również, że wymownym model oferuje kilka przydatnych dodatkowych że również upraszcza rzeczy, jak JSON konwersji __toString chronione atrybuty, data casting, itp Podczas pobierania wielu modeli będą one być przechowywane w Collection, Arrayable, który zapewnia jeszcze więcej metod na szczęśliwe czasy.Sprawdź to: http://laravel.com/docs/5.1/eloquent-collections

1

Możesz uruchomić proste zapytania SQL w Laravel, jeśli chcesz, ale w rzeczywistości większość przykładów używa Eloquent.

Zrobiłem projekt z ponad 100 tabel i najczęściej można używać Eloquent zamiast wprowadzania surowych zapytań SQL za każdym razem, ale to raczej moje preferencje.

Jednak wspomniano, że w bazie danych dostępnych jest wiele procedur składowanych i wyzwalaczy. Mówiąc szczerze, powinieneś przemyśleć to, ponieważ teraz możesz wprowadzać wiele logiki biznesowej do bazy danych, a twoja logika jest zarówno w bazie danych, jak iw aplikacji.

Widziałem kilka miesięcy temu taką bazę danych w MsSQL i było okropnie - nikt tak naprawdę nie wiedział, co się dzieje i kiedy chciałeś przenieść tę bazę danych do MySQL i aplikacji Laravel to był duży problem, ponieważ było zbyt wiele logiki w baza danych (nie brałem udziału w tym projekcie tylko się temu przyjrzałem)