データベース シードを (他のコンソール コマンドと一緒に) 実行すると、名前の競合が発生します。
私のモデルはすべて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 {}
私のモデルのいくつかは雄弁なモデルを直接拡張しています。
<?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 が何らかの形でシード ファイルをコンパイルし、それが競合を引き起こしていると考えています。誰かアイデアを持っていますか、それとも他の誰かがすでにこの問題に遭遇していますか?