【发布时间】:2015-04-21 13:38:46
【问题描述】:
我在运行我的数据库种子(以及其他控制台命令)时遇到了命名冲突。
我的所有模型都存储在app/Models 目录中,并且位于App\Models 命名空间中。在这个目录中有一个名为 Model.php 的基础模型,它扩展了 laravel 基础模型。
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model as BaseModel;
abstract class Model extends BaseModel {}
我的一些模型扩展了这个基类,例如
<?php namespace App\Models;
class User extends Model {}
我的一些模型直接扩展了 eloquent 模型,例如
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Sport extends Model {}
当我的应用程序通过 http 访问时,这可以正常工作,并且没有命名冲突。但是,当我尝试运行控制台命令(例如 db:seed)时,出现以下错误:
PHP Fatal error: Cannot use Illuminate\Database\Eloquent\Model as Model because the name is already in use in /home/vagrant/Code/wisletics/app/Models/Sport.php on line 3
我最初的猜测是 laravel 以某种方式编译种子文件,这导致了冲突。有没有人有任何想法,或者其他人已经遇到过这个问题?
【问题讨论】:
-
编译后的文件在存储目录
storage/framework/compiled.php -
我刚刚想到 - 你能发布你的数据库种子文件吗?
-
@satrun77 我根本看不到那个文件。
标签: php namespaces laravel-5 laravel-seeding