Php 雄辩的关系(拉威尔5.4)
我正在制作一个Laravel5.4应用程序,但我很难弄清楚我应该如何用雄辩的关系来构建数据 这是我的模型以及我希望它们如何关联: 学校→ 拥有类、用户和事件 使用者→ 可以属于一所学校。可以使用案例进行课程和会话 阶级→ 属于一所学校。有用户和主题。我可以做作业 主题→ 属于一个阶级 会议→ 属于某个用户。可以有箱子吗 案例→ 属于某个会话 事件→ 属于一所学校 家庭作业→ 属于一个阶级Php 雄辩的关系(拉威尔5.4),php,laravel,eloquent,laravel-5.4,laravel-eloquent,Php,Laravel,Eloquent,Laravel 5.4,Laravel Eloquent,我正在制作一个Laravel5.4应用程序,但我很难弄清楚我应该如何用雄辩的关系来构建数据 这是我的模型以及我希望它们如何关联: 学校→ 拥有类、用户和事件 使用者→ 可以属于一所学校。可以使用案例进行课程和会话 阶级→ 属于一所学校。有用户和主题。我可以做作业 主题→ 属于一个阶级 会议→ 属于某个用户。可以有箱子吗 案例→ 属于某个会话 事件→ 属于一所学校 家庭作业→ 属于一个阶级 在我的Laravel 5.4项目中,我应该如何用以下雄辩的关系函数来构建它?假设类、用户和事件模型有一个属性
在我的Laravel 5.4项目中,我应该如何用以下雄辩的关系函数来构建它?假设类、用户和事件模型有一个属性school\u id,并且您要使用的主键是相应模型的id,那么您的类、用户、事件和学校模型应该如下所示 学校
class School extends Model
{
public function users(){
return $this->hasMany('App\User');
}
public function classes(){
return $this->hasMany('App\Class');
}
public function sessions(){
return $this->hasMany('App\Session');
}
}
使用者
阶级
事件
您可以使用这些关系来定义具有链接功能的查询。e、 g.如果您想获取与id属性等于$id的学校相关的所有事件,您可以编写
$events = App\School::find($id)->events;
Laravel解释得很好创建了学校模型和基础表,现在是创建关系的时候了。打开学校模型并创建名为classes、users和events的公共方法;其中引用了hasMany方法: 学校:
class School extends Model {
public function classes()
{
return $this->hasMany('App\Class');
}
public function users()
{
return $this->hasMany('App\User');
}
public function events()
{
return $this->hasMany('App\Event');
}
}
用户:
class User extends Model {
public function school(){
return $this->belongsTo('App\School');
}
public function classes(){
return $this->hasMany('App\Class');
}
public function sessions(){
return $this->hasMany('App\Session');
}
}
类别:
class Class extends Model {
public function school(){
return $this->belongsTo('App\School');
}
public function users(){
return $this->hasMany('App\User');
}
public function subjects(){
return $this->hasMany('App\Subject');
}
public function homeworks(){
return $this->hasMany('App\Homework');
}
}
主题:
class Subject extends Model {
public function class(){
return $this->belongsTo('App\Class');
}
}
会议:
class Session extends Model {
public function user(){
return $this->belongsTo('App\User');
}
public function cases(){
return $this->hasMany('App\Case');
}
}
案例:
class Case extends Model {
public function session(){
return $this->belongsTo('App\Session');
}
}
活动:
class Event extends Model {
public function school(){
return $this->belongsTo('App\School');
}
}
家庭作业:
class Homework extends Model {
public function class(){
return $this->belongsTo('App\Class');
}
}
有关hasMany关系的更多详细信息,请查看此处的链接:正确的方法是 学校 阶级 使用者 主题 会议 案例 事件 家庭作业
没有雄辩,你怎么做?你试过写下数据库结构吗?你已经知道了它们之间的关系。如果你阅读了关于Laravel的文档,在Laravel中应该很容易做到。主要的问题是我不知道什么时候应该使用hasManyThrough关系。有人能解释一下什么时候用这个吗?@Kristoferdamborgjørgensen可能不会。有两个原因:1这不是你在问题中问的问题,2这是一个广泛的问题。另外,你应该保持它的简单愚蠢,如果你更了解其他关系,它应该能满足你的要求。@Wistar-保持它的简单愚蠢是很有意义的:D像user_id等外键如何,我需要自己添加它们,还是雄辩为我这样做用户应该属于多个类,因为类也可以有多个用户。。这应该由一个表来透视。。以及会议
class Case extends Model {
public function session(){
return $this->belongsTo('App\Session');
}
}
class Event extends Model {
public function school(){
return $this->belongsTo('App\School');
}
}
class Homework extends Model {
public function class(){
return $this->belongsTo('App\Class');
}
}
public function classes()
{
return $this->hasMany('App\Class');
}
public function users()
{
return $this->hasMany('App\User');
}
public function events()
{
return $this->hasMany('App\Event');
}
public function school()
{
return $this->belongsTo('App\School');
}
public function subjects()
{
return $this->hasMany('App\Subject');
}
public function homeworks()
{
return $this->hasMany('App\Homework');
}
public function users()
{
return $this->belongsToMany('App\User','class_users','class_id','user_id');
// this should be many to many because users can also have many classes
}
public function school()
{
return $this->belongsTo('App\School');
}
public function classes()
{
return $this->belongsToMany('App\Class','class_users','user_id','class_id');
// this should be many to many as explained to class
}
public function sessions()
{
return $this->belongsToMany('App\Session','session_users','user_id','session_id');
// like classes do, this should be many to many relationship because sessions can also have many users
}
public function class()
{
return $this->belongsTo('App\Class');
}
public function users()
{
return $this->belongsToMany('App\User','session_users','session_id','user_id');
// should be many to many as well
}
public function cases()
{
return $this->hasMany('App\Case');
}
public function session()
{
return $this->belongsTo('App\Session');
}
public function school()
{
return $this->belongsTo('App\School');
}
public function class()
{
return $this->belongsTo('App\Class');
}