ewo*_*wok 5 conflict models laravel eloquent
我的 Laravel 应用程序中有一个名为Event. 正如我刚刚发现的那样,这会在我的模型和Illuminate\Support\Facades\Event内置外观之间产生冲突。这里显而易见的解决方案是更改我的模型的名称,这并不理想,因为我真的没有其他名称可以给我的模型有意义,或者将别名重命名app.php为 for Illuminate\Support\Facades\Event,我想避免这种情况因为害怕破坏将来可能依赖该别名的任何东西(恐怕我可能会忘记)。
有人建议也许我可以使用命名空间,我尝试如下:
应用程序/模型/Event.php
namespace Models; #<-- I've also tried using "\Models" here
class Event extends \Eloquent{
Run Code Online (Sandbox Code Playgroud)
应用程序/数据库/种子/DatabaseSeeder.php
Models\Event::create(); #<-- again, I've also used "\Models\Event"
Run Code Online (Sandbox Code Playgroud)
所有4个以上的组合已经产生了Class 'Models\Event' not found,当我运行错误php artisan db:seed。
也许我只是没有正确理解命名空间,但更紧迫的问题是如何解决我的问题。如果它可以按照建议使用命名空间来解决,那就太好了,但我也愿意接受任何其他想法。
我很早就犯了这个错误,不一定理解命名空间在整个应用程序中的作用。
命名空间应该标记应用程序本身的域或职责内的业务逻辑,因此提供模型的命名空间不一定有用。相反,创建一个以应用程序、您的公司、您或您喜欢的任何名称命名的根命名空间,然后提供模型子命名空间。
例如:
namespace MyGreatApp\Models;
class Event extends \Eloquent{ }
Run Code Online (Sandbox Code Playgroud)
然后您可以在以下位置引用该模型:
use MyGreatApp\Models\Event;
$event = new Event();
Run Code Online (Sandbox Code Playgroud)
从长远来看,这是一种更干净、更有组织的方法。但这确实意味着将您的模型移动到不同的文件夹中。但这并没有什么问题。至少这样您就知道您的 MyGreatApp 命名空间中拥有所有自定义代码。:)
| 归档时间: |
|
| 查看次数: |
2051 次 |
| 最近记录: |