如何在L5 中处理Eloquent 关系中的名称空间?
How to deal with namespaces in Eloquent relations in L5?
所以我有文件夹 app/Models/Blog
,其中有两个文件:Posts.php
和 Tags.php
。这两个文件在同一个 App\Models\Blog
命名空间中,但要使用多对多关系,我需要像 $this->belongsToMany('App\Models\Blog\Tags');
那样调用,否则我会得到一个异常,即未找到标签 class ...是否有可能以某种方式摆脱 App\Models\Blog\
命名空间并只调用 Tags
?
可以这样做,但我认为这是个坏主意。您可以在 app/Config/app.php 中为您的 class 添加别名,这样您就可以将 App\Models\Blog\Tags 添加到标签中,就像 laravel class 一样别名。
我认为这是个坏主意,因为它污染了根命名空间。例如,您最终会遇到 class 命名冲突,因为您试图将 App\Models\Blog\Tags 和 AnotherApp\Models\PaymentGateway\Tags 别名设为相同的别名。这是命名空间旨在解决的问题,但是将 classes 别名为根命名空间会使问题重新出现。
所以我有文件夹 app/Models/Blog
,其中有两个文件:Posts.php
和 Tags.php
。这两个文件在同一个 App\Models\Blog
命名空间中,但要使用多对多关系,我需要像 $this->belongsToMany('App\Models\Blog\Tags');
那样调用,否则我会得到一个异常,即未找到标签 class ...是否有可能以某种方式摆脱 App\Models\Blog\
命名空间并只调用 Tags
?
可以这样做,但我认为这是个坏主意。您可以在 app/Config/app.php 中为您的 class 添加别名,这样您就可以将 App\Models\Blog\Tags 添加到标签中,就像 laravel class 一样别名。
我认为这是个坏主意,因为它污染了根命名空间。例如,您最终会遇到 class 命名冲突,因为您试图将 App\Models\Blog\Tags 和 AnotherApp\Models\PaymentGateway\Tags 别名设为相同的别名。这是命名空间旨在解决的问题,但是将 classes 别名为根命名空间会使问题重新出现。