【发布时间】:2017-09-26 10:19:54
【问题描述】:
我正在尝试在 laravel eloquent 方法中使用相关模型的类名,方法是使用“USE”为模型类的名称提供别名。例如,我使用了 UserProfile 模型类:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\UserProfile;
现在我在 eloquent 中使用它如下:
public function profileDetails() {
return $this->hasOne('UserProfile', 'user_id', 'id');
}
但这会引发Class 'UserProfile' not found 的错误
如果我在这个雄辩的第一个参数中直接传递相关模型的名称和路径,那么它工作正常
public function profileDetails() {
return $this->hasOne('App\Models\UserProfile', 'user_id', 'id');
}
我想知道为什么它不适用于 use
【问题讨论】:
-
如果您使用的是 PHP 5.5+,您可以使用
UserProfile::class(无引号)。这不是利用您在上面声明的use的唯一方法。use允许您在本地为类设置别名,但实际上不会更改类的完全限定名。 -
@JimWright 为您提供了解决方案。因为你给出了错误的类路径
-
@apokryfos 它对我有用。谢谢!!还有另一种方法可以创建此类的实例,例如。
new UserProfile -
基本上它是一个本地别名,每当您引用任何类静态函数或创建新实例时,您都可以将其引用为例如
new UserProfile或UserProfile::find('id')
标签: php laravel-5 model eloquent relationship