2015-07-27 3 views
2

Я создал класс модели в app корневой каталог. Так как laravel 5 использует app корневой каталог для моделей. Я не создал другую папку для Models.Laravel 5 Класс модели

class Posts extends Eloquent{} 

И в routes.php:

Route::get('/', function() { 

    $painting = Posts; 
    $painting->title = 'Do no Wrong'; 
    $painting->artist = 'D. Do right'; 
    $painting->year = 2014; 
    $painting->save(); 

    return view('welcome'); 
}); 

Он выдает следующее сообщение об ошибке:

Class 'Painting' not found 

ответ

3

Имя файла вашей модели должно отражать название класса. Таким образом, для модели Posts файл должен иметь имя Posts.php. Если предположить, что эта модель была помещена в App/ каталоге вашей установки Laravel, модель должна выглядеть примерно так:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Posts extends Model 
{ 

} 

Вы можете получить доступ к Posts модели в вашем маршруте под App имен, как App\Posts:

Route::get('/', function() { 

    $painting = new App\Posts; 
    $painting->title = 'Do no Wrong'; 
    $painting->artist = 'D. Do right'; 
    $painting->year = 2014; 
    $painting->save(); 

    return view('welcome'); 
}); 

Вышеприведенное должно работать, но я бы рекомендовал использовать не-множественные имена для ваших моделей. Поэтому в идеале ваша модель Posts должна называться Post, а таблица в базе данных будет называться posts. Это номер convention Laravel expects you to follow при названии классов и таблиц базы данных.

+0

Отличный ответ Спасибо – Gammer

0

Изменить $painting = Posts; для $painting = new Posts;

Кроме того, я думаю, вы должны создать красноречивую таких моделей:

namespace App; 
use Illuminate\Database\Eloquent\Model; 

class Posts extends Model 

Вместо того чтобы пытаться расширить «Красноречиво».

+0

Извините за глупую ошибку. Теперь ошибка 'Class 'Painting' not found' – Gammer

+0

Вы поменяли ее на' $ painting = new Painting; 'по ошибке? В вашем примере класс модели называется Posts. –

+0

Да, это его сообщения! По-прежнему такая же ошибка 'Class Posts not found'. – Gammer

0

вы можете сохранить записи использовать метод создания

Posts::create([ 'title' => 'Do no Wrong', 'artist' = 'D. Do right']); 

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

Route::get('/', function() { 
    $painting = new Posts; 
    $painting->title = 'Do no Wrong'; 
    $painting->artist = 'D. Do right'; 
    $painting->year = 2014; 
    $painting->save(); 
    return view('welcome'); 
}); 
+0

Вопрос обновлен. – Gammer

0

Вам не хватает пространства имен и нового оператора;

Try:

Route::get('/', function() { 

    $painting = new App\Posts; 
    $painting->title = 'Do no Wrong'; 
    $painting->artist = 'D. Do right'; 
    $painting->year = 2014; 
    $painting->save(); 

    return view('welcome'); 
}); 

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

<?php namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Posts extends Model{ 

} 
+0

'class App \ Posts not found' :( – Gammer

+0

Это означает, что ваше пространство имен модели неверно. Проверить мой обновленный ответ – Digitlimit

+0

По-прежнему такая же ошибка' Class 'App \ Posts' not found' – Gammer

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