如何从 Laravel 的公用文件夹中调用模型?

Posted

技术标签:

【中文标题】如何从 Laravel 的公用文件夹中调用模型?【英文标题】:How to call model from public folder in Laravel? 【发布时间】:2017-06-04 05:46:37 【问题描述】:

我正在尝试通过我在 Laravel 中的公用文件夹调用将项目添加到模型,但出现此错误:

Fatal error: Uncaught Error: Call to a member function connection() on null in [..]/Illuminate/Database/Eloquent/Model.php

这是我的公共文件夹中的文件:

<?php
require __DIR__.'../../../bootstrap/autoload.php';
use Illuminate\Database\Eloquent\Model;
use \App\Models\Cdr;

$id_ex = '11';
$cdr = new Cdr();
$cdr->id_ex = $id_ex;
$cdr->save();

在此之前我需要以某种方式启动应用程序吗?我也尝试过从公用文件夹调用控制器内的方法,但它给了我同样的错误。例如:

CdrController::storeCdr($id_ex);

我的模特:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Cdr extends Model


    public $table = 'cdr';
    protected $dates = ['deleted_at'];
    public $fillable = [];
    public $guarded = ['id'];

    /**
     * The attributes that should be casted to native types.
     *
     * @var array
     */
    protected $casts = [];

    /**
     * Validation rules
     *
     * @var array
     */
    public static $rules = [];

【问题讨论】:

不是require __DIR__.'../bootstrap/autoload.php';吗?或者你有没有在 public 里面放一些其他的文件夹? 是的,我在 public 的子文件夹中工作,应该不会影响这个吧? 不,不应该。我已经弄清楚发生了什么,现在输入我的答案;) 【参考方案1】:

现在,您的脚本对它的环境一无所知。它不知道是否存在数据库甚至框架,您必须实际启动应用程序才能使这些信息可用。

你可以这样做

$app = require __DIR__ . '../../../bootstrap/app.php';

如果这不起作用,您至少需要启动 ConsoleKernel。检查app/Console/Kernel.php 和它的超类ConsoleKernel 以了解如何做到这一点。

【讨论】:

正是我的问题。谢谢洛克。 很高兴能帮上忙,在这个过程中也学到了更多关于 Laravel 的知识哈哈 @Loek 分号前缺少单引号。

以上是关于如何从 Laravel 的公用文件夹中调用模型?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:如何在 Laravel 中找到公用文件夹?

在 Laravel 中,如何获取公用文件夹中所有文件的列表?

如何将 laravel 项目指向共享主机中 public_html 下的公用文件夹

如何访问公用文件夹外的图像(Laravel)[重复]

在Laravel 5中,如何获取公用文件夹中所有文件的列表?

如何在 Laravel 中将公用文件夹设为 root?