如何从 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 项目指向共享主机中 public_html 下的公用文件夹