php
  • mysql
  • laravel
  • enums
  • 2017-04-16 13 views 0 likes 
    0

    私は私のテーブルにenum列を持っていると私は、ドロップダウンのテーブルに設定された値を取得しようとしています。だから、最初に私がcolumn_typecolumn_name列挙値

    "SELECT `COLUMN_NAME`,`DATA_TYPE`,`COLUMN_TYPE` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`='devsbh' AND `TABLE_NAME`='modules' AND `COLUMN_NAME` NOT IN ('created_at', 'updated_at')" 
    

    を取得するには、このクエリを書かれているし、私はそう

    <?php 
        $regex = "/'(.*?)'/"; 
        preg_match_all($regex , $modules->COLUMN_TYPE , $enum_array); 
        $enum_fields = $enum_array[1]; 
    ?> 
    

    のような列挙型の値を取得するには、この操作を行うと、私はそう

    PSのように表示します。 laravelのブレードテンプレートエンジンを使用します。

    {!! Form::select($modules->COLUMN_NAME,$enum_fields) !!} 
    

    ここまではすべて正しいです。私がそれを保存しようとすると、Y => 0とN => 1の場合と同じように保存しようとします。key =>値をenum値と同じにするにはどうしたらいいですか?コンソールの通り

    $enum_fieldsの値は[0] => Y、[1] => Nです。

    答えて

    0

    あなたのコードベースに列挙型をハードコーディングする方がよいでしょう。

    MySQLを使用していると仮定すると、列挙型の背後にある考え方は、実際には列の値を特定のセットに制限することです - 基本的に "値がこれらの文字列の1つではない場合は許可しません"。

    列挙型は頻繁に変更されるようには設計されていません(実際には、変更しようとすると問題が発生する可能性があります)。データベースの体操によって、 。

    あなたの「ルック」のデータが変更された場合、あなたはそれが格納されたデータベースである必要があり、列をあなたのルックアップフィールドを含む別のテーブルへの外部キーを作ります。

    あなたが列挙型、単にハードコードあなたのドロップダウンリスト内で立ち往生している場合。

    0

    あなたは今$ keyValueSame配列のキーと値が同じ値を持つことになり、同じように

    <?php 
        $regex = "/'(.*?)'/"; 
        preg_match_all($regex , $modules->COLUMN_TYPE , $enum_array); 
        $keyValueSame = array_combine($enum_array[1],$enum_array[1]); 
    ?> 
    

    などのキーと配列の値を作るためにarray_combineメソッドを使用することができます。コンソールの通り

    $ keyValueSameの値は、[Y] => Y [N] => Nです。

    関連する問題