Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL,Laravel:何时创建关系?_Mysql_Laravel_Relational Database_Eloquent - Fatal编程技术网

Mysql SQL,Laravel:何时创建关系?

Mysql SQL,Laravel:何时创建关系?,mysql,laravel,relational-database,eloquent,Mysql,Laravel,Relational Database,Eloquent,我正在探索SQL和关系数据库领域,因为我对数据库设计相对较新,我想知道表/对象关系是如何工作的。我所说的关系是指在另一个表上引用一个id,这在像Laravel这样的框架中被大量使用,它的ORM很有说服力。文件中说明了如何建立关系,但没有说明为什么和何时建立关系?不这样做的好处或缺点是什么 那么我的问题;何时以及为什么需要在表之间创建关系? 示例: 我当时正在为我们当地的室内足球/足球俱乐部练习Laravel应用程序,该应用程序使用多张桌子(这让我对这个概念感到困惑)。我的应用程序的表/资源包括:

我正在探索SQL和关系数据库领域,因为我对数据库设计相对较新,我想知道表/对象关系是如何工作的。我所说的关系是指在另一个表上引用一个id,这在像Laravel这样的框架中被大量使用,它的ORM很有说服力。文件中说明了如何建立关系,但没有说明为什么和何时建立关系?不这样做的好处或缺点是什么

那么我的问题;何时以及为什么需要在表之间创建关系?

示例: 我当时正在为我们当地的室内足球/足球俱乐部练习Laravel应用程序,该应用程序使用多张桌子(这让我对这个概念感到困惑)。我的应用程序的表/资源包括:

  • 比赛
  • 团队
  • 火柴
  • 地点
  • 澄清一下:共有12支球队参加了7场比赛(总共84支球队),他们在3个室内球场进行比赛。每场比赛的比赛都不与1场比赛挂钩,所以比赛2B在球场上有1场比赛和2场比赛。 我的应用程序的目标是显示不同比赛的计划/时间表、赛程和排名。我想使用关系,这样我就可以检索在第一场比赛中进行的所有比赛或竞赛2A的所有比赛

    我假设关系是这样的:

    1. Competitions -> hasMany Teams,  | Teams   -> belongTo Competition
    2. Competitions -> hasMany Matches | Matches -> belongTo Competition
    3. Location     -> hasMany Matches | Matches -> belongTo Location
    4. Matches      -> hasMany Teams   | Teams   -> HaveMany Teams
    
    我创建了迁移和模型,但一个接一个地遇到了错误。例如每场比赛都有两个队,如何指定这种关系?和比赛,他们属于一个比赛,以及一个位置,所以我可以查询这两个位置的所有比赛和比赛的所有比赛

    这一切都是可能的,还是evert表只能有一个父/子关系

    也许有人在这件事上有一些好的资源,从初学者到新手,让我学习和掌握这件事的基本知识


    提前谢谢

    我会给你一个快速的回答。 基本上,您可以在模型之间创建关系,因为它们是模型定义的一部分

    为什么??因为它在很多情况下都有帮助

    如果我们选择你的第一段感情:

     1. Competitions -> hasMany Teams,  | Teams   -> belongTo Competition
    
    定义该关系将简化以下操作:

    • 定义参加比赛的团队
    $competition->teams()->save($newTeam)

    • 找回参加比赛的队伍
    $teams=$competition->teams()

    • 检索由某个团队进行的比赛
    $competitions=$team->competitions()

    由于这些类型的操作非常常见,有说服力的ORM允许您使用其简单有效的语法,而不是编写有时复杂的SQL请求


    什么时候?只要模型之间存在此类关系,就始终声明它们。

    ORM可以帮助您快速启动。这对于任何更大的应用程序来说都是不够的,但利用它的功能可以让你专注于重要的事情,而不必为基本的东西重新发明轮子。您的关系可以通过为每个模型编写几行代码来建立,它们将起作用-这就是您的原因。什么时候我会说,只要你不需要更强壮的东西。然后创建自定义方法,或者用(比如)条令替换雄辩。对于最后一个问题,您可以在模型上定义任意数量的关系。如果您想帮助处理错误,请显示您的代码。这样我就可以给出一个多个家长(belongsTo)关系的模型了?如何保存具有双亲的子模型?在文档中我唯一能找到的就是如何保存一个只有一个关系的模型。当然可以。描述一下你的情况,然后我可以给你一些建议。假设我想增加季节。每年应用程序管理员都会添加一个新赛季,但不必再次添加球队或创建新的比赛。他只需要填写所有的比赛。我如何才能做到这一点?另一个例子:我有一个比赛表,其中有两支球队(主客场)。我如何指定一个关系,如果我查询Matches表,团队就会被加载?