我是 Laravel 的新手,在加载我的模型以便为数据库播种时遇到问题。我已经尝试了 composer.json 的 Laravel 4 方法和 Laravel 5 PSR-4。
数据库播种器.php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
\App\Models\Client::truncate();
\App\Models\Module::truncate();
\App\Models\ModuleConnection::truncate();
Model::unguard();
$this->call('ClientsTableSeeder');
$this->call('ModulesTableSeeder');
$this->call('ConncetionsTableSeeder');
}
}
客户端.php
目前这些在 app\Models 中,但我已经在 Users.php 旁边的应用程序中尝试过它们
namespace App\Models;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Client extends \Eloquent {
proteced $fillable = ['id', 'name', 'email', 'created_at', 'updated_at'];
}
模块.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Module extends \Eloquent {
proteced $fillable = ['id', 'name', 'created_at', 'updated_at'];
}
ModuleConnection.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model as Eloquent;
class ModuleConnection extends \Eloquent {
proteced $fillable = ['id', 'clientid', 'moduleid', 'apiconn', 'created_at', 'updated_at'];
}
错误
这是我运行 php artisan db:seed 的时候
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'App\Models\Client' not found
我敢肯定这是我作为初学者所缺少的一些愚蠢的东西!谢谢!
最佳答案
首先,您可能必须扩展 Eloquent 而不是\Eloquent。当您在用法中添加\时,您是在告诉 PHP 在其根命名空间中查找 Eloquent。所以:
namespace App\Models;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Module extends Eloquent {
proteced $fillable = ['id', 'name', 'created_at', 'updated_at'];
}
其次,无需执行 composer dumpautoload
,因为您的 App 命名空间已包含在 Laravel 安装中:
"autoload": {
...
"psr-4": {
"App\\": "app/"
}
},
这是告诉自动加载器在 app/
路径中搜索您的命名空间类。
您必须检查的是文件 Client.php 是否在文件夹中:
app/Models/Client.php
并按原样命名。除此之外,我在您的代码中没有发现任何问题。
关于php - Laravel 5 找不到 Eloquent 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29948635/