2017-03-24 12 views
1

Laravel/Eloquentでアクセスしたい大きなデータベースがあります。Laravel Eloquent - snake_caseとcamelCaseの列が混在した既存のデータベース

    私はLaravel 5.2、
  • を使用してい
  • I持ってphp artisan ide-helper:models

しかしコマンドを使用して、私は自動補完を生成した

  • "user11001 /雄弁モデル・ジェネレータ" のパッケージを使用して作成されたモデル私のデータベースには、snake_case列とcamelCase列が混在していて、camelCase列「seoAlias」に次のようなコードでアクセスしようとすると、次のようなコードで表示されます。

    $x = AdvertiserModel::whereSeoAlias('someValue')->get(); 
    

    私は次のエラーを取得する:

    SQLSTATE[42S22]: Column not found: 1054 Unknown column 'seo_alias' in 'where clause'

    誰もがLaravelを使用してsnake_caseとキャメルケース列のミックスでデータベースにアクセスするためのソリューションを持っていますか?

    ありがとう、

  • 答えて

    1

    あなたの列名がseoAliasある場合は、以下を使用することができます。

    $x = AdvertiserModel::where('seoAlias','=','someValue')->get(); 
    

    あなたは列の名前を変更することなく、雄弁でデータベースにアクセスすることができますこの方法です。

    +0

    タイプセーフではありませんが、間違いなく機能します。だから私はそれをやらなければならないと思う – mils

    0

    いいと思います。 L3のEelquentはcamel_caseを必要としました。私は、L4のためにデータベース全体をcamelCaseに変換するのは、実際的ではないと思います。かなり簡単なものをいつ使用するかを覚えておいてください。

    Class names are study case and methods are camel case (PSR-1). 
    Eloquent attributes can be accessed using either snake or camel case, but database tables and columns are snake case. 
    Configuration options, language lines, and view names are snake case and use "dot" syntax. 
    Global functions are snake case per PHP convention. 
    Input can be whatever you want. 
    

    これは本当にすべてです。

    +0

    大規模な既存のデータベースの列の半分の名前を変更してLaravelと連携させることは現実的ではないと考えています – mils

    関連する問題