在模型Laravel中将DB列名称指定为静态变量

时间:2017-01-22 08:01:26

标签: php laravel laravel-5 eloquent

我有一个模型类,我在其中定义了列的名称。

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 / Eloquent。

这有可能吗?

谢谢!

4 个答案:

答案 0 :(得分:0)

你可以这样做:Permission::colName 也许这也是,但我没有测试它

$data = $user->permission::colName

答案 1 :(得分:0)

首先使用变量名称,像这样使用

  $mycolname = Permission::colName;

并像这样获取变量。

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

答案 2 :(得分:0)

  

导入权限模型

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

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

答案 3 :(得分: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;
    }

}

在控制器中:

//...
// Trying to get the value of column 'mycolname'
// I wanna do it this way, but I'm getting a syntax error:
$data = Permission::canCreateStuff($id);