参数1传递给Illuminate \\ Support \\ Collection :: __ construct()必须是类型数组,给定对象

时间:2013-06-03 20:23:57

标签: laravel laravel-4

路线:

Route::get('test', array('before' => 'auth', 'as' => 'asd', function()
{
$user = User::find('1');               //Auth::user();
$user->Persona->last_name = 'Blaine';
$user->push();
print_r($user->Persona);
exit;
}));

用户模型:

use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

    protected   $table          = 'ucpm_users';
    public function Persona()
    {
        return $this->belongsTo('Persona','persona');
    }

人物角色模型:

class Persona extends Eloquent 
{

protected   $table          = 'metadata_personas';

public function User()
{
    return $this->hasOne('User', 'persona');
}

public function Telefonos()
{
    return $this->hasMany('Telefonos', 'persona');
}

}

当我按下()条目模型时,Laravel会抛出一个ErrorException:

传递给Illuminate \ Support \ Collection :: __ construct()的参数1必须是类型数组,给定对象,在/ var / www / laravel / vendor / laravel / framework / src / Illuminate / Support / Collection中调用。 php在第41行并定义了

入门脚本(模型和路由)在laravel3下完全正常工作,我不知道为什么这在Laravel4下不起作用。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

是的,正如我在评论中提到的那样,这是Laravel的一个错误。幸运的是Taylor刚刚在github上发布了一个修复程序。这是提交:

https://github.com/laravel/framework/commit/f41b86018cd3dc09dd5b216e98c3bfabf0653954

基本上你只需要更改\ vendor \ laravel \ framework \ src \ Illuminate \ Support \ Collection.php中的第41行来说

    return new static(is_array($items) ? $items : array($items));

应该这样做:)

答案 1 :(得分:0)

在遇到此问题后,我发现John的答案有效,但需要修改composer创建的文件,我认为这不是最终解决方案。

Garbee建议实际需要的是将config vendor/laralve/lumen-framework文件夹复制到根文件夹

  

您必须在应用程序中创建该文件夹,并将需要修改的任何配置从框架包复制到其中。

这样做解决了我的问题。