【问题标题】:Laravel/PHP: New Instance of Model Class within Method of This ModelLaravel/PHP:该模型方法中模型类的新实例
【发布时间】:2014-08-23 13:59:13
【问题描述】:

Laravel 新手,OOP 仍然新鲜!我假设这与 OOP 的关系比严格意义上的 Laravel 更多。

所以我的主要问题是我试图通过我的模型中名为 Income 的方法将名为“fin_income_category”的数据库表中的所有行传递给名为 PlannerController 的控制器。为此,我在 Income 中创建了一个名为 getIncomeCategories() 的静态方法

首先,这是我在收入中的 __construct 方法:

public function __construct($income, array $attributes = array()){
  parent::__construct($attributes);

  $this->table = $income; 
}

这也是收入中的 getIncomeCategories 方法:

public static function getIncomeCategories(){
   $category = new self('fin_income_category');
   $categories = $category->all();
   return $categories;
}

最后,这是 PlannerController 中的 edit($id) 方法,我将在其中调用此方法并将类别传递给我的视图。请注意,只有该函数中的第一个语句是有问题的......其他的工作正常:

public function edit($id)
{
   $income_categories = Income::getIncomeCategories();

   $newIncome = new Income('fin_income');
   $newRecord = $newIncome->where('id', '=', $id)->get();

   return View::make('planner.edit', array('record'=>$newRecord, 'categories'=>$income_categories));
}

当我像这样运行代码时,我从 Laravel 收到一个错误:

错误异常

Income::__construct() 缺少参数 1, 在第 615 行调用 /opt/lampstack/frameworks/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php 并定义

在我实例化新收入的其他情况下,我没有收到此错误。

【问题讨论】:

    标签: php function class oop laravel-4


    【解决方案1】:

    将 getIncomeCategories() 更改为此

        public static function getIncomeCategories(){
               $category = new self('fin_income_category');
               return $category->get()->toArray();
       }
    

    你的代码之所以不起作用是因为在

    Illuminate\Database\Eloquent\Model; the code snippet is found below
    
    public static function all($columns = array('*'))
    {
        $instance = new static;
    
        return $instance->newQuery()->get($columns);
    }
    

    正在实例化一个静态类,该类绑定到被调用的类,在您的情况下是您的 Income 模型类,并且在请求构造函数中的参数的过程中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多