2015-06-11 3 views
2

Я новичок в laravel. Я создал класс миграции:Проблемы с моделью Laravel

<?php 

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateMusicsTable extends Migration 
{ 
/** 
* Run the migrations. 
* 
* @return void 
*/ 
public function up() 
{ 
    Schema::create('musics', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('title'); 
     $table->string('artist'); 
     $table->string('album'); 
     $table->string('name'); 
     $table->string('art')->nullable(); 
     $table->timestamps(); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::drop('musics'); 
} 
} 

модель под названием Music.php:

<?php namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Music extends Model { 
    protected $table = 'musics'; 
} 

контроллер с именем MainController:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use App\Music; 


class MainController extends Controller 
{ 
/** 
* Display a listing of the resource. 
* 
* @return Response 
*/ 
public function index() 
{ 
    $musics = Music::all(); 

    return view('index', compact('musics')); 
} 

Моя проблема заключается в индекс контроллера Music::all(); не возвращает ничего но если я удалю App\Music и вместо этого использую DB и замените Music::all() на DB::table('musics')->get();, он отлично работает. Почему это?

Update: Route.php

<?php 

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

Update 2: index.blade.php:

@foreach($musics as $music) 
    <span>{{ $music->title }}</span> 
@endforeach 
+0

Как вы подтверждаете, что он ничего не возвращает? Вы должны попытаться использовать 'dd ($ musics)', чтобы проверить, есть ли какие-либо элементы в результате. –

+0

, пожалуйста, включите также свой Route.php? – CrackingTheCode

+0

@ MarcinNabiałek данных не имеется. 'dd ($ musics) возвращает' Collection {# 144 ▼ #items: [] } ' –

ответ

0

Поправьте меня, если я ошибаюсь, но я не верю, что " Коллекция {# 144 ▼ #items: []} "означает, что возвращается 144 элемента. Похоже, ваш массив пуст.

Внутри php artisan tinker см., Что App \ Music :: all(); возвращается.

0

Попробуйте внутри контроллера

public function index() 
{ 
    $musics = Music::all(); 

    return view('index', ['musics' => $musics]); 
} 
0

Убедитесь, что вы добавить Model в контроллере после namespace. В верхней части вашего контроллера вы должны использовать это:

namespace App\Http\Controllers; 

use App\Music.php; //add this line