【问题标题】:How to dynamically pass the variable name into the model in the laravel provider's model config.php file如何在 laravel 提供者的模型 config.php 文件中动态地将变量名传递给模型
【发布时间】:2021-04-12 11:30:55
【问题描述】:

比如说

'''

    $model_name = 'student_table';

'''

'providers' => [

        'users' => [
                '$model_name' => [
                'driver' => 'eloquent',
                'model' => App\Models\.$model_name.::class
                ]
        ]
]

问题是 laravel 会触发一个意想不到的 '.'期待已识别 (T_STRING)

而且我需要动态插入模型名称,因为有很多数据库表要连接。任何其他解决方案请

【问题讨论】:

    标签: php laravel namespaces breeze


    【解决方案1】:

    这是行不通的,提供程序是在控制器之前加载的。

    也许如果您在数据库中使用配置表来引导用户拥有特定的身份验证表。

    https://laravel.com/docs/5.7/lifecycle

    【讨论】:

    【解决方案2】:

    这是一个语法错误。 在App\Models\ 之后你不能有.,它希望你接下来写类名。

    试试这个:

    'providers' => [
    
        'users' => [
                '$model_name => [
                      'driver'=> 'eloquent',
                       'model' => "App\Models\\" . $model_name
                ]
        ]
    ]
    

    请注意,您不再需要 ::class,因为您在字符串中拥有类的完整命名空间。

    【讨论】:

    • ** ::class** 不是 $model_name 变量的一部分,我该如何附加它
    • @BalogunGbenga 你不需要那个!
    • 我收到一条错误消息,提示找不到 Class 'App\Models\'
    • @BalogunGbenga 那可能是因为$model_name 是空的
    • 是的,我想就是这样,有没有办法在验证时将变量传递给 config.php 文件?
    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多