Laravel 5 中的 Model:all() 错误

Error on Model:all() in Laravel 5

你能帮帮我吗?

我刚开始使用 laravel 5,无法让这个简单的 Model:all() 工作。我确定我做错了什么,但我不知道是什么。

这是我的:

routes.php

Route::get('/', 'PageController@index');

Partner.php

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Partner extends Model {
    protected $table = 'tab_parceiro';
    protected $fillable = '';
    public $timestamps = false;

    protected $primaryKey = 'codigo';
}

PageController.php

<?php namespace App\Http\Controllers;

class PageController extends Controller {

    public function __construct()
    {
    }

    public function index()
    {
        $partners = \App\Partner::all();

        //return view('index', compact('partners'));
    }

}

错误:

[2015-03-14 12:50:22] production.ERROR: exception 'ErrorException' with message 'array_flip() expects parameter 1 to be array, string given' in /home/ubuntu/workspace/storage/framework/compiled.php:9360

Table

| tab_parceiro | CREATE TABLE `tab_parceiro` (
  `CODIGO` int(11) NOT NULL AUTO_INCREMENT,
  `NOME` varchar(200) DEFAULT NULL,
  `ENDERECO` varchar(100) DEFAULT NULL,
  `TELEFONE` varchar(20) DEFAULT NULL,
  `EMAIL` varchar(50) DEFAULT NULL,
  `SITE` varchar(100) DEFAULT NULL,
  `CONTATO` varchar(50) DEFAULT NULL,
  `OBS` text,
  PRIMARY KEY (`CODIGO`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 |

视图实际上并不重要,因为错误发生在调用视图之前。

$fillable 必须是 数组 而不是字符串:

protected $fillable = ['foo', 'bar'];

我在其中放置了一些示例属性(foobar),因为空数组是默认值,您根本不必指定它。无论如何,相当于你的空字符串是:

protected $fillable = [];

您正在使用

protected $fillable = '';

但它接受数组,所以它应该是

 protected $fillable = array();

可填充应如下所示:

protected $fillable = ['NOME', 'ENDERECO', 'TELEFONE', 'EMAIL', 'SITE', 'CONTATO','OBS'];

注意:使用大写 table 列名并没有错,但我确实建议将小写作为一个好的约定。