如何在Laravel 5中调用模型?

6
所以,在 L5 中,我创建了一个名为 app/Models/Blog 的文件夹,在那里有一个名为 Posts.php 的文件,看起来像这样:
<?php namespace App\Models\Blog;

use Illuminate\Database\Eloquent\Model;

class Posts extends Model {
    protected $table = 'posts';
}

在执行完之后,我运行了composer dump,然后在我的控制器中:

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Models\Blog\Posts as Posts;

class BlogController extends Controller {

    public function index()
    {
        $post = Posts::all()->toArray();

        dd($post);
    }
}

它抛出了一个错误:
FatalErrorException in BlogController.php line 14: Class 'Models\Blog\Posts' not found
4个回答

16

尝试更改这个:

use Models\Blog\Posts as Posts;

转换为:

use App\Models\Blog\Posts;

哦,我的粗心大意...谢谢。 - user1692333
你能解释一下为什么 Laravel 不需要 include 模型文件,即使它们位于不同的目录中吗? - adrianriyadi

1
在Laravel 5.2中,它只是这样的:

use App\Blog;

或者

use App\Blog\Posts;

0

请修改以下内容

class Posts extends Model {

class Posts extends \Eloquent {

对不起,我读得太快了。您忘了在路径前加上命名空间(默认为应用程序)。 - maartenpaauw

0

你需要检查两个点:

  1. namespace 必须放在第一位
  2. 在你的情况下,使用 use App\Models\Blog

像这样:

<?php
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Models\Blog;

class BlogController extends Controller {

    public function index()
    {
        $post = Posts::all()->toArray();

        dd($post);
    }
}

(已在Laravel 5.4上测试)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接