2017-01-22 5 views
0

私は列の名前を定義するモデルクラスを持っています。コントローラで モデルの静的変数としてDB列名を指定します。Larvel

class Permission extends Model 
{ 
    public static $colName = 'mycolname'; 
    //... 
} 

:場合

//... 
// Trying to get the value of column 'mycolname' 
// I wanna do it this way, but I'm getting a syntax error: 
$data = $user->permission->Permission::$colName; 

// This way works, but I don't want to hardcode the column name here 
$data = $user->permission->mycolname; 

ことが重要だ、私はLaravel 5.3 /雄弁を使用しています。

これは多分可能でしょうか?

ありがとうございます!

答えて

0

それをテストしていませんこの。

$data = $user->permission->$mycolname; 
+0

ありがとう!あまりにもそれはローカル変数を必要とする悪い...クリーナーされているだろう。 – zundi

0

あなたはこのようにそれを行うことができます。あまりにもPermission::colName と多分これが、私は、最初の変数名を取り、この

$mycolname = Permission::colName; 

のように使うなどの変数をフェッチ

$data = $user->permission::colName 
+0

最初の 'permission'は、関連付けられた' permission'テーブル情報を取得しているので、これは機能しません。 – zundi

+0

これを変数に保存してから、この '$ user-> permission - > $ variable;'を実行してください。 –

0

他の誰かがすでに(私は受け入れられてきた)これに対する解決策を掲載ものの、私が行うモデル内のメソッドを作成することになった

$columnname = Permission::$colName; // Add this line to get column name 

$data = $user->permission->$columnname; // get column value 
0

輸入許可モデルそこに私のためのロジック:コントローラで

class Permission extends Model 
{ 
    public static $colName = 'mycolname'; 
    //... 

    public static function canCreateStuff($id) { 

     $perm = Permission::where('user_id', $id)->where(Permission::$colName, 1)->first(); 

     if ($perm != null) { 
      return true; 
     } 

     return false; 
    } 

} 

関連する問題