【问题标题】:Laravel 5 Constant defineLaravel 5 常量定义
【发布时间】:2018-10-19 04:14:46
【问题描述】:

我尝试了所有选项。尽管如此,它仍然显示“常量表达式包含无效操作”。我正在使用 Laravel 5.5,请帮助。我需要在常量中定义表名并在模型中使用它。

我在模型中写道:

protected $table = Config::get('constants.dbTable.EMAILTEMPLATE');

并且在config里面的constant.php中:

return [ 'langs' => 
    [ 
        'es' => 'www.domain.es', 
        'en' => 'www.domain.us' // etc 
    ], 
    'siteTitle' => 'HD Site', 
    'pagination' => 5, 
    'tagLine' => 'Do the best', 
    'dbTable'=>[ 
        'EMAILTEMPLATE' => 'stmd_emailTemplate'
    ] 
];

我想使用emailTemplate 表。

【问题讨论】:

  • 你试过什么。你能把代码贴在这里吗?
  • 我写在 Model protected $table = Config::get('constants.dbTable.EMAILTEMPLATE');而在constant.php里面的Config return [ 'langs' => [ 'es' => 'www.domain.es', 'en' => 'www.domain.us' // etc ], 'siteTitle' => '高清站点', '分页' => 5, 'tagLine' => '尽力而为', 'dbTable'=>[ 'EMAILTEMPLATE'=>'stmd_emailTemplate'] ];我想使用 emailTemplate 表
  • 查看链接中给出的解决方案。可能对你有帮助。 stackoverflow.com/questions/40827870/…

标签: php laravel-5 constants


【解决方案1】:

根据您在评论中发布的代码,您正在尝试为模型中的属性分配一个值,但您分配的太早(假设来自关键字 protected。)您不能这样做:

class SomeModel extends Model
{
    protected $someProperty = config('some.value'); // Too early!
}

因为您正在尝试初始化需要运行时解释的属性。

有一个解决方法;使用你的构造函数。

class SomeModel extends Model
{
    protected $someProperty; // Define only...

    public function __construct() {
        parent::__construct(); // Don't forget this, you'll never know what's being done in the constructor of the parent class you extended
        $this->someProperty = config('some.value');
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多