【问题标题】:How do I call a model in a custom Laravel 5.3 config file?如何在自定义 Laravel 5.3 配置文件中调用模型?
【发布时间】:2017-02-12 04:07:04
【问题描述】:

我正在尝试为我的应用程序设置全局变量。

我看到了一些建议,自定义配置文件就是其中之一。

所以我在 config 目录下创建了一个constraints.php 文件。

这是示例代码:

    return [
       'user_exist'=>1 
    ];

我可以使用 config('constraints.user_exist')

访问此值

所以我尝试了以下代码:

    return [
       'user_exist'=>count(\App\User::first())
    ];

但它会引发以下错误: PHP 致命错误:在 null 中调用成员函数 connection() project/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php 在第 3308 行

【问题讨论】:

    标签: php laravel global-variables config


    【解决方案1】:

    应用程序配置是在 Laravel 引导数据库层之前收集的,因此您此时无权访问底层数据库集合。您最好在应用程序加载后设置此配置变量,也许在您的AppServiceProviderboot 方法中。

    config(['constraints.user_exist', count(\App\User::first())])
    

    另外,如果您只是想检查是否有任何用户模型已持久化到数据库中,您可能只需执行 \App\User::exists()

    【讨论】:

    • 有道理! config('constraints.user_exist', count(\App\User::first())) 不起作用。请看我的回答。谢谢
    • 抱歉,刚刚编辑了答案。正如下面 Doom5 所说,您将一个键/值对数组传递给函数以设置值。
    【解决方案2】:

    扩展@Dwight 答案,我可以通过在 AppServiceProviderboot 方法中设置一个新的配置变量来找到我的预期输出

    use Illuminate\Support\Facades\Config;
    
    
    Config::set('user_exist', User::exists());
    

    并访问此值:

    config('user_exist')
    

    【讨论】:

    • 要使用 config() 帮助器设置配置的值,请​​将键/值对传递给它:config(['constraints.user_exist', count(\App\User::first())])
    【解决方案3】:

    第 1 步: 示例:假设您想在配置文件中访问用户模型,然后转到您的配置文件并在 app.php 中添加以下代码

    'user_model' => App\Models\User::class,
    

    第二步: 现在,您可以在任何地方的应用程序中使用此 user_model。只需调用

    $user = config('app.user_model'); // app in file name
    

    现在,

    1. 假设您要访问所有用户数据

    $user::all();

    1. 假设您想使用用户 ID 访问特定的用户数据

    $user::find(1);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      相关资源
      最近更新 更多