我为用户提供了以下模型:
alias meson="~/.local/bin/meson"
用户在许多表中都有不同的信息
我现在的方式“最佳做法”(如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();
}
}
函数)是否可以从不同的表中获取信息?
或者我应该为每个表格创建一个模型,然后为每个表格“加入它们”(getDashboards
,hasMany
等等)?
修改
我现在正在使用模型,但查询结果总是一个空数组。
belongsToMany
class Dashboard extends Model
{
protected $table = 'dashboard';
public function user()
{
return $this->belongsTo(User::class,'user_id','id');
//user_id
}
}
是login_info表中使用的用户的id。
在User类中我有:
user_id
在登录控制器中我有:
public function dashboards()
{
return $this->hasMany(Dashboard::class,'id','user_id');
}
任何人都能看到问题所在?
感谢您的帮助!
答案 0 :(得分:1)
更多的Laravel方法是创建相关的Dashboard
模型并使用雄辩的关系,并利用ORM的功能。如果您总是需要在该列上进行排序,那么在关系中包含orderBy
没有错。
class User extends Authenticatable
{
public function dashboards()
{
return $this->hasMany(Dashboard::class)
->orderBy('column', 'asc');
}
}
class Dashboard extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
答案 1 :(得分:1)
public function dashboards()
{return $this->hasMany(\App\Dashboard::class);
}
在您的仪表板模型中,您可以这样做
protected $casts = [
'user_id' => 'int',
];
public function user()
{
return $this->belongsTo(\App\User::class);
}
答案 2 :(得分:0)
您无需在模型中执行任何操作!只需参考控制器中的模型,例如:
User::where('id', Auth::id())->pluck('type');