2015-03-14 5 views
0

вы можете мне помочь?Ошибка на модели: all() в Laravel 5

Я только начинаю с laravel 5 и не могу получить эту простую модель: all() для работы. Я уверен, что я делаю что-то неправильно, но я не могу понять, что.

Вот что у меня есть:

routes.php

Route::get('/', '[email protected]'); 

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 

Таблица

| 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 | 

мнение на самом деле не имеет значения, потому что ошибка происходит до того, как вид называется.

+1

Вы передаете строку '' 'partners''' вместо переменной '' $ partners''. –

+1

Как я уже сказал в конце, этот вызов для представления не имеет значения, поскольку перед ним возникает ошибка, в строке Partner :: all() (вот почему это прокомментировано). Кроме того, я не передаю строку как переменную, я ее уплотняю, что работает. –

+0

@limonte, что строка прокомментирована. он не будет иметь никакого эффекта в потоке. – itachi

ответ

7

$fillable должен быть массив не строка:

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

Я положил несколько примеров атрибутов (foo и bar) там, потому что пустой массив по умолчанию, и вы не должны указывать это вообще. В любом случае, эквивалент вашей пустой строкой будет:

protected $fillable = []; 
+0

Я думаю, что это должно быть 'protected $ fillable = [];' – Hkan

+1

@ HakanAktaş Да, но пустой массив по умолчанию, поэтому нет смысла указывать его вообще ... – lukasgeiter

+0

Что это! Я знал, что это было что-то довольно глупое, что я не видела. Благодаря! –

0

Вы используете

protected $fillable = ''; 

, но он принимает массив таким образом это должно быть

protected $fillable = array(); 
0

Fillable должен выглядеть следующим образом:

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

NB: Noth неверно использовать имена столбцов в верхнем регистре, но я предполагаю, что строчные буквы являются хорошим соглашением.

+0

Да, я знаю о нижнем регистре в именах таблиц, но это еще одна система, которая добавляет данные в эти таблицы, поэтому я не могу контролировать ее. Благодарю. –

Смежные вопросы