如何在自定义Laravel 5.3配置文件中调用模型?

时间:2016-10-04 05:22:53

标签: php laravel global-variables config

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

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

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

这是示例代码:

    return [
       'user_exist'=>1 
    ];

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

来访问此值

所以我尝试了以下代码:

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

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

3 个答案:

答案 0 :(得分:5)

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

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

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

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

现在,

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

    $用户::所有();

    1. 假设您要使用用户ID
    2. 访问特定用户数据
        

      $用户::发现(1);

答案 1 :(得分:2)

在Laravel引导数据库层之前收集应用程序配置,因此您无法在此时访问底层数据库集合。最好在应用程序加载后设置此配置变量,可能使用boot的{​​{1}}方法。

AppServiceProvider

另外,如果您只是想检查是否有任何用户模型持久存储到数据库,您可能只需执行config(['constraints.user_exist', count(\App\User::first())])

答案 2 :(得分:0)

扩展@Dwight的答案,我可以通过在 AppServiceProvider

启动方法中设置新的配置变量来找到我的预期输出
use Illuminate\Support\Facades\Config;


Config::set('user_exist', User::exists());

并访问此值:

config('user_exist')