2015-12-23 4 views
7

私はPHPプログラマーとして12年目を迎え、ホスティングされたソリューションとして提供されているクローズドソースweb-app用の独自のフレームワークを、同じ共有データベースを使用して構築しています。すべてのお客様に。間違った&データベースの移行がないLaravel?

今私はLaravel 5を試していて、ほぼすべての例でEloquentとデータベースの移行を使用していることに気づいています。私にとっては、単純なデータベースやSQLやデータベース設計が気に入らない人(この人は間違っているかもしれません)をターゲットにしているようです。

私たちのMySQLデータベースには、100以上のテーブル、多くのストアドプロシージャ、多くのトリガが含まれていますが、これはORMでは想像もできません。 Navicatを使用してデータベース設計とSQLクエリのテストを行います。データベースを新しいバージョンのアプリケーションにアップグレードするために、私たちはすでに素敵なスクリプトやビジュアルツールを書いています。

基本的に私の質問は、LaravelがEloquentやマイグレーションで本当に使用されることを意図しているか、または私が本当にそれらなしで多くの機能を欠いているかどうかです。

お勧めですか?

+0

申し訳ありません。これは無関係です、あなたはmysql dbとextjsを使ってdoctrineを使ってcodeignighterを試しましたか?それはよりよくフィットするかもしれません。 – unixmiah

+0

あなたが雄弁を使用したくない場合は、それまであなたはそれまでですが、私は移行がクールだと思います。 – Ceeee

+0

Codeigniterは決して試したことがありませんが、最近、Laravelを使用したいと思います。現在は独自のAJAXフレームワークを使用していますが、AngularJSまたはEmberJSの使用を開始する予定です。 – Dylan

答えて

3

はあなた件まで、

Laravelの移行も雄弁が参加し、複数のように複雑な状況のためにテーブル間の単純な関係マッピングを目的とされており、そのすべてのために推奨されていません(バージョンコントローラを使用している間)データベースのバージョンを維持するために目指している。そのあなたはそれがはるかに優れたパフォーマンスを提供しますQuery Builderを選択することができ、パフォーマンスの問題は、その後、あなたはLaravelでプレーンなクエリを記述する必要がLaravelは角のJsのために完璧にマッチされ、より多くのLaravelがあるいくつかの素敵なPHPコンポーネントの単なるラッパーである\DB::statement();

を使用迅速な結果を提供することができる。

はORMを使用して

1

として最も一般的なシナリオのは既に覆われている、あなたの人生を簡素化...それが役に立てば幸い。データの取得、関係の管理、熱心な/怠惰な読み込みは簡単です。また、独自のハードコードされたクエリを作成する際に発生する可能性のある注入脆弱性からあなたを守ります。 もちろん、すべてのシナリオをORMで処理できるわけではないため、RAWクエリを記述することも可能です。あなたがALTERまたはSET年代のようなものを実行したい場合は、あなたがDB::Statementを使用することができます

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

:LaravelのQuery Builderを使用して、あなたはこのような何かを行うことができます。

EloquentはLaravelのORMですが、Query Builderは安全な方法でクエリを作成するレイヤです。

Eloquentを使用するかどうかはあなた次第ですが、私は彼らが確かなORMでうまくいったと信じていますが、Doctrine、Data Mapperなどのような別のORMをいつでも自由に実装できます。Laravelそれらのほとんどのためのバインディング。

編集:言及する価値が雄弁モデルは、複数のモデルをフェッチする場合、彼らはに保存されます__toString、保護された属性、日付鋳造など を変換JSONのように、また、物事を単純化し、いくつかの便利な余分なのを提供することもありますCollectionArrayableは、さらに多くの方法で幸せな時間を提供します。それをチェックアウトしてください:http://laravel.com/docs/5.1/eloquent-collections

1

あなたは必要に応じてLaravelで簡単なSQLクエリを実行できますが、実際にはほとんどの例がEloquentです。

私は100以上のテーブルを持つプロジェクトを行ってきましたが、たいていは生のSQLクエリを毎回入れずにEloquentを使用することが可能ですが、それはむしろ私の好みです。

しかし、データベースには多くのストアドプロシージャとトリガがあると述べましたが、正直言って、あなたはそれを考え直すべきです。今は多くのビジネスロジックをデータベースに入れ、ロジックはデータベースとアプリケーションの両方にあるからです。

MsSQLでそのようなデータベースを見たことがあります。何が起こっているのか本当に知りませんでした。このデータベースをMySQLとLaravelアプリケーションに移行するときには、大きな問題でした。データベース(私はこのプロジェクトに参加していないが、それを見てみた)

関連する問題