Php laravel关系的外键等价物
所以我有那些模型Php laravel关系的外键等价物,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,所以我有那些模型 // Curso.php public function trienio() { return $this->hasMany('App\Trienio'); } // Trienio.php public function curso() { return $this->belongsTo('App\Curso'); } public function oe() { return $this->belongsTo('App\OE')
// Curso.php
public function trienio()
{
return $this->hasMany('App\Trienio');
}
// Trienio.php
public function curso()
{
return $this->belongsTo('App\Curso');
}
public function oe()
{
return $this->belongsTo('App\OE');
}
public function aluno()
{
return $this->hasMany('App\Aluno');
}
// Oe.php
public function trienio()
{
return $this->hasMany('App\Trienio');
}
// Aluno.php
public function trienio()
{
return $this->belongsTo('App\Trienio');
}
public function pap()
{
return $this->hasOne('App\PAP');
}
// Pap.php
public function aluno()
{
return $this->belongsTo('App\Aluno');
}
public function video()
{
return $this->hasOne('App\Video');
}
// Video.php
public function pap()
{
return $this->belongsTo('App\Pap');
}
我很难将它们转换为sql外键。有谁能告诉我外键等价物将如何考虑这些雄辩的关系?提前付款
p、 如果需要,我可以提供更多细节
p、 s2-我真正想知道的是,我应该如何根据这些雄辩的关系来构造字段、sql外键和约束。如果您有很多关系,请指定使用的外键。如下
// Curso.php
public function trienio()
{
return $this->hasMany('App\Trienio', 'curso_id');
}
这意味着您在Curso和Trienio之间有一对多关系,但是表Trienio必须有一个字段作为Curso_id。如果您想要默认实现,则无需使用SQL外键约束建立硬关系。默认情况下,此关系将起作用。
在belongsTo中,您不需要指定可选键
从Curso获取数据
$curso = Curso::find(1);
$trienio = $curso->trienio;
在trienio这边,没关系
// Trienio.php
public function curso()
{
return $this->belongsTo('App\Curso');
}
对所有其他人来说也是如此。
注意:如果您对Curso和Trienio一对多这样做,Trienio模型的表必须有Curso_id字段,默认情况下,关系将在SQL端不做任何操作的情况下工作。
更新:使用SQL修改Trienio模型的表
使用模式生成器迁移文件
您可以指定级联规则。如果有多个关系,请指定使用的外键。如下
// Curso.php
public function trienio()
{
return $this->hasMany('App\Trienio', 'curso_id');
}
这意味着您在Curso和Trienio之间有一对多关系,但是表Trienio必须有一个字段作为Curso_id。如果您想要默认实现,则无需使用SQL外键约束建立硬关系。默认情况下,此关系将起作用。
在belongsTo中,您不需要指定可选键
从Curso获取数据
$curso = Curso::find(1);
$trienio = $curso->trienio;
在trienio这边,没关系
// Trienio.php
public function curso()
{
return $this->belongsTo('App\Curso');
}
对所有其他人来说也是如此。
注意:如果您对Curso和Trienio一对多这样做,Trienio模型的表必须有Curso_id字段,默认情况下,关系将在SQL端不做任何操作的情况下工作。
更新:使用SQL修改Trienio模型的表
使用模式生成器迁移文件
您可以指定级联规则。您可以记录迁移完成的查询并查看它们是什么。下面回答。您可以记录迁移完成的查询并查看它们是什么。下面回答。谢谢您的提醒,但我并不真的想要这样做。我想知道的是如何根据我所展示的雄辩的关系在sql数据库中构造外键和约束。我想我没有很好地表达我的观点。在这篇文章中看到我的更新,您可以在创建表时使用laravel schema builder创建关系和外键运行迁移,如果您想使用SQL,那么可以在SQL server上运行SQL语句。但是,一旦你使用ORM建立了关系,就没有必要使用SQL来建立硬关系。谢谢你的提醒,但我真的不想这样。我想知道的是如何根据我所展示的雄辩的关系在sql数据库中构造外键和约束。我想我没有很好地表达我的观点。在这篇文章中看到我的更新,您可以在创建表时使用laravel schema builder创建关系和外键运行迁移,如果您想使用SQL,那么可以在SQL server上运行SQL语句。但是,只要您使用ORM建立关系,就不需要使用SQL来建立硬关系。