Laravel模型问题

时间:2015-06-11 20:05:48

标签: php laravel laravel-5

我是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();它工作良好。那是为什么?

更新: Route.php

<?php

get('/', 'MainController@index');

更新2: index.blade.php:

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

3 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我,但我不相信“收集{#144▼#items:[]}”表示返回144件物品。看起来你的数组是空的。

在php工匠修补匠里面,看看App \ Music :: all();回报。

答案 1 :(得分:0)

在你的控制器中试试这个

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

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

答案 2 :(得分:0)

确保在Model之后在控制器中添加namespace。在控制器的顶部你应该使用它:

namespace App\Http\Controllers;

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