Laravel 拉威尔模型
我正在laravel开发一个应用程序,特别是一个社交网络。 在一个问题上浪费了一些时间之后,我发现我有两个文件响应了用户模型 一个在“appname”下命名,另一个在“appname\Models”下命名, 在“appname”下添加posts()方法时出现了一个找不到该方法的错误,因此我假设“appname\Models”下的方法是正确的。虽然删除“appname”下的“User.php”会给我一个Laravel 拉威尔模型,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我正在laravel开发一个应用程序,特别是一个社交网络。 在一个问题上浪费了一些时间之后,我发现我有两个文件响应了用户模型 一个在“appname”下命名,另一个在“appname\Models”下命名, 在“appname”下添加posts()方法时出现了一个找不到该方法的错误,因此我假设“appname\Models”下的方法是正确的。虽然删除“appname”下的“User.php”会给我一个 Fatal error: Class 'Instyle\User' not found 错
Fatal error: Class 'Instyle\User' not found
错误
我肯定我误解了一些东西,我只是不能指出在哪里。
app\Models\User.php
名称空间Instyle\Models
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
protected $table = 'users';
protected $fillable = [
'username',
'email',
'password',
'first_name',
'last_name',
'location',
];
protected $hidden = [
'password',
'remember_token',
];
public function getName()
{
if($this->first_name && $this->last_name)
{
return "{$this->first_name} {$this->last_name}";
}
if ($this->first_name)
{
return $this->first_name;
}
return null;
}
public function getUsername()
{
return $this->username;
}
public function getFirstNameOrUsername()
{
return $this->first_name ?: $this->username;
}
public function getAvatarUrl()
{
$hash = md5(strtolower(trim($this->attributes['email'])));
return "http://www.gravatar.com/avatar/$hash?d=https://u.pomf.is/maqope.png";
}
public function posts()
{
return $this->hasMany('Instyle\Post');
}
}
app/User.php
<?php
namespace Instyle;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function posts()
{
return $this->hasMany('Instyle\Post');
}
}
我会避免两个模型使用相同的名称,因为它可能会相互冲突,尽管它们位于不同的路径中
确保使用use path\to\your\namespace\Model
导入自定义模型;表达式以允许以正确的方式定位模型的根路径
查看Post和用户模型示例代码以评估错误可能会有所帮助
更新:为什么不尝试只生成一个用户模型,而与用户配置文件相关的其他数据则尝试以一对一关系保存到配置文件表?i、 e.firstname、lastname、location、twitter\u帐户、facebook\u帐户、phone\u号码等可以存储在用户配置文件或配置文件分隔表中,然后您用最少的必填字段维护用户表,并删除另一个
我会避免两个模型使用相同的名称,因为它可能会相互冲突,尽管它们位于不同的路径中
确保使用use path\to\your\namespace\Model
导入自定义模型;表达式以允许以正确的方式定位模型的根路径
查看Post和用户模型示例代码以评估错误可能会有所帮助
更新:为什么不尝试只生成一个用户模型,而与用户配置文件相关的其他数据则尝试以一对一关系保存到配置文件表?i、 e.firstname、lastname、location、twitter\u帐户、facebook\u帐户、phone\u号码等可以存储在用户配置文件或配置文件分隔表中,然后您用最少的必填字段维护用户表,并删除另一个
如果应用程序名为Instyle,Instyle\User
是app
文件夹中的User.php
,而不是app/Models/
中的User.php
更多信息:了解有关名称空间和自动加载的更多信息。检查compose.json。在这里,它表示namespace Instyle是app/folder,从这里开始,每个文件顶部的名称空间按照绝对文件夹路径进行
"psr-4": {
"Instyle\\": "app/"
}
还有一件事,如果您愿意在其他任何地方使用User.php并将其视为身份验证目的,请记住,如果您的应用程序名为Instyle,请相应地更改config/auth.php
中声明的身份验证配置,Instyle\User
是app
文件夹中的User.php
,而不是app/Models/
中的User.php
更多信息:了解有关名称空间和自动加载的更多信息。检查compose.json。在这里,它表示namespace Instyle是app/folder,从这里开始,每个文件顶部的名称空间按照绝对文件夹路径进行
"psr-4": {
"Instyle\\": "app/"
}
还有一件事,如果您愿意在其他任何地方使用User.php并将其用于身份验证目的,请记住相应地更改config/auth.php
中声明的身份验证配置检查config\auth.php
,特别是数组中的model
键,它指向哪个模型?=>['users'=>['driver'=>'eloont','model'=>Instyle\Models\User::class],检查config\auth.php
,特别是数组中的model
键,它指向哪个模型?'providers'=>['users'=>['driver'=>'elount','model'=>Instyle\Models\User::class],我仍然不明白为什么两个似乎都适用我仍然不明白为什么两个似乎都适用