【发布时间】:2018-06-11 04:12:04
【问题描述】:
我有以下用户模型:
class User extends Authenticatable
{
use Notifiable;
protected $table = 'login_info';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function getDashboards()
{
return \DB::table('dashboard')
->select('type')
->where('id', Auth::id())
->orderBy('column', 'asc')
->get();
}
}
用户在很多表中有不同的信息
- 用户信息,例如姓名、办公室、仪表板、2FA 等
我现在的方式是“最佳实践”(如getDashboards 函数)从不同的表中获取信息吗?
或者我应该为每个表创建一个模型,然后为每个表“加入它们”(hasMany、belongsToMany 等)?
编辑:
我现在正在使用模型,但是查询的结果总是一个空数组。
class Dashboard extends Model
{
protected $table = 'dashboard';
public function user()
{
return $this->belongsTo(User::class,'user_id','id');
//user_id
}
}
user_id是登录信息表中使用的用户ID。
在 User 类中我有:
public function dashboards()
{
return $this->hasMany(Dashboard::class,'id','user_id');
}
在我的登录控制器中:
$user = \App\User::find(1);
$user->dashboards;
有人知道问题出在哪里吗?
感谢您的帮助!
【问题讨论】:
-
你应该为每个表创建一个单独的模型
-
肯定为每个表创建一个模型